2012-04-03 46 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