小编use*_*289的帖子

在python中对齐日语字符

我很难在python中对齐日文字符.

码:

print "{c1}{name:>14s}{c2}{nick_name:>14s}{planes:>16s}".format(
    name=name, nick_name=nick_name, planes=planes, 
    c1=u.color['yellow'], c2=u.color['default']
)
Run Code Online (Sandbox Code Playgroud)

结果: 在此输入图像描述

如果字符串只包含英文和数字,则.format()工作正常,如右图所示.

遇到日文字符时对齐出错,如左侧所示.

有趣的是,在调整时{name:>14s}:

  • 如果"name"包含4个JP字符,则会有2个前缀空格.
  • 如果"name"包含3个JP字符,则会有5个前缀空格.
  • 如果"name"包含2个JP字符,则会有8个前缀空格.
  • 如果"name"包含0个JP字符,则会有14个前缀空格.

在这种情况下,它似乎对待1个日本特征= 3个空格.

{name:<14s} {name:^14s} {name:>14s} 都有上面提到的行为.

我使用的是OSX 10.10.2,终端字体是摩纳哥.

也许这与全宽/半角字符有关.

有没有像英文字符那样对齐日文字符?

谢谢.


编辑:

Ignacio Vazquez-Abrams的回答确实是正确的方法.

  • 每个在Python中处理unicode的人都应该阅读他指出的幻灯片.

  • "\ u3000"是CJK中的全宽空间.看到这个页面.

  • 查看.Format语法也会有所帮助.

  • 我还想推荐这个SO答案,这有助于我理解unicode在Python中的工作原理.

但是,如果字符串包含半角和全角字符,则对齐仍然会出错.一个简单的解决方法是使用所有全角字符.

在此输入图像描述

python format text-alignment

5
推荐指数
1
解决办法
784
查看次数

标签 统计

format ×1

python ×1

text-alignment ×1