2012-08-25 50 views
0

我无法在格式化字符串为UTF-8 在这个脚本IM从Excel中获取数据文件 然后打印出来的一环,问题是 字符串包含特殊字符出现错误。从字符串列表

在结果我不断收到“帕特雷«cija”而不是‘Patrīcija’ 似乎无法找到这个问题

#!/usr/bin/env python 
    # -*- coding: utf-8 -*- 

    import sys 
    import xlrd 
    import datetime 

    def todaysnames(): 
    todaysdate = datetime.datetime.strftime(datetime.date.today(), "%d.%m") 

    book = xlrd.open_workbook("vardadienas.xls") 
    sheet = book.sheet_by_name('Calendar') 
    for rownr in range(sheet.nrows): 
     if sheet.cell(rownr, 0).value == todaysdate: 
      string = (sheet.cell(rownr, 1).value) 
      string = string.encode(encoding="UTF-8",errors="strict") 
      names = string.split(', ') 
      return names 

    names = todaysnames() 
    for name in names: 
     print name 
+1

sheet.cell()。value返回什么? unicode字符串?一个字节字符串? –

+0

尝试urllib.unquote(字符串),导入urllib使用它。 –

+0

urllib.unquote没有任何改变 – Reinis

回答

1

更改编码iso8859_13(Baltic languages)和它固定它。

-1

我认为你的问题可能是由print造成的解决方案。 xlrd返回utf8。根据控制台的编码,print可能难以正确打印。我注意到这有时在法语Windows上(其中编码是cp1252)

以下问题:Python, Unicode, and the Windows console解释了如何在Windows上的控制台上打印unicode字符。我没有尝试自己,但看起来不错。

我希望它能帮助

+0

请解释downvote – luc

+0

从@Ever到达的解决方案来看,我怀疑你的回答是在正确的轨道上。 (但是你可以稍微解释一下这个问题 - 对于外行来说这个链接是无用的)。 – alexis

+0

好吧,我试着解释一下:)。我没有太多时间,只想指出@Ever可能导致问题的原因。但像往常一样,它第一次值得花费所需的时间! ;-) – luc

相关问题