How to control utf-8 string paddings
<p>I got three UTF-8 stings:</p>

<pre><code>hello, world
hello, 世界
hello, 世rld
</code></pre>

<p>I only want the first 10 ascii-char-width so that the bracket in one column:</p>

<pre><code>[hello, wor]
[hello, 世 ]
[hello, 世r]
</code></pre>

<p>In console:</p>

<pre><code>width('世界')==width('worl')
width('世 ')==width('wor')  #a white space behind '世'
</code></pre>

<p>One chinese char is three bytes, but it only 2 ascii chars width when displayed in console:</p>

<pre><code>&gt;&gt;&gt; bytes("hello, 世界", encoding='utf-8')
b'hello, \xe4\xb8\x96\xe7\x95\x8c'
</code></pre>

<p>python's <code>format()</code> doesn't help when UTF-8 chars mixed in</p>

<pre><code>&gt;&gt;&gt; for s in ['[{0:&lt;{1}.{1}}]'.format(s, 10) for s in ['hello, world', 'hello, 世界', 'hello, 世rld']]:
...    print(s)
...
[hello, wor]
[hello, 世界 ]
[hello, 世rl]
</code></pre>

<p>It's not pretty:</p>

<pre><code> -----------Songs-----------
|    1: 蝴蝶                  |
|    2: 心之城                 |
|    3: 支持你的爱人              |
|    4: 根生的种子               |
|    5: 鸽子歌(CUCURRUCUCU PALO|
|    6: 林地之间                |
|    7: 蓝光                  |
|    8: 在你眼里                |
|    9: 肖邦离别曲               |
|   10: 西行( 魔戒王者再临主题曲)(INTO |
| X 11: 深陷爱河                |
| X 12: 钟爱大地(THE MO RUN AIR |
| X 13: 时光流逝                |
| X 14: 卡农                  |
| X 15: 舒伯特小夜曲(SERENADE)    |
| X 16: 甜蜜的摇篮曲(Sweet Lullaby|
 ---------------------------
</code></pre>

<p>So, I wonder if there is a standard way to do the UTF-8 padding staff?</p>
