Type Chinese pinyin with tone numbers in Markdown. Get accented pinyin.

pinyin, chinese, markdown
pip install pinyin_markdown==0.8.1


Pinyin and Python and Markdown, together!

Type Chinese pinyin with tone numbers, and have them automagically converted to beautiful accented pinyin.

travis PyPI version

A Markdown extension that looks through your text for things like yi1dian3r, Xi3an4 and lu:5 and replaces them with accented pinyin. The pinyin syllables are marked up with span tags with classes denoting the tone.

Add 'pinyin_markdown' to your Markdown call and watch the magic unfold:

>>> from markdown import Markdown

>>> markdown = Markdown(extensions=['pinyin_markdown']
>>> markdown.convert('i ♥ Xi3an4!')
<p>i ♥ <span class="tone3"></span><span class="pyap">'</span><span class="tone4">àn</span></p>

>>> markdown = Markdown(extensions=['pinyin_markdown(tone_class=, apostrophe_class=apo)']
>>> markdown.convert('i ♥ Xi3an4!')
<p>i ♥ <span></span><span class="apo">'</span><span>àn</span></p>

The three examples above are rendered as: yīdiǎnr, Xǐ'àn and lü, with HTML:

<span class="tone1">yī</span><span class="tone3">diǎn</span><span class="erhua">r</span>
<span class="tone3">Xǐ</span><span class="pyap">'</span><span class="tone4">àn</span>
<span class="tone5">lü</span>


Option Type Default Description
tone_class str 'tone{}' HTML class name for tones, which will be formatted with tone_class.format(tone) where tone is a number 1-5
apostrophe_class str 'pyap' HTML class name for apostrophes needed between vowels
erhua_class str 'erhua' HTML class name for the erhua 'r' e.g. in dianr
entities bool False If True, output the accented characters as entity codes &466#;


From Github:

git clone
pip install -e ./pinyin_markdown

From Pypi:

pip install pinyin_markdown

Also have a look at tsroten's zhon for more Python pinyin goodness.