2012-04-03 16 views
0

使用简单的字段宽度说明符时,如果字符串包含'European'字符,那么这些列是'thinner'。我有一个小的脚本打印出从一个Django DB(姓氏,FIRST_NAME,电子邮件等)的各个领域,并且列是为每个这样的字符1个字符以内的字符串Python字符串格式宽度在字符串中使用é或ö时错误

例如:

  Johansen 
     lövström 

使用"%20s" % field.encode('utf-8')打印

任何想法发生了什么事? (以及如何修复)

回答

4

好吧,ö编码为UTF-8中的两个字节。而你的格式指定了20个字节。

您可以尝试在unicode字符串世界中进行格式化,其中%20s表示20个字符,并将格式化结果转换为utf-8。

+0

非常感谢,工作了一个魅力......构建了行字符串,它们编码为utf-8输出(而不是每个字段) - 更短的代码!没有意识到宽度是以字节为单位的... – 2012-04-03 10:11:51