2012-08-25 54 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

相關問題