2011-12-17 93 views
2

我使用Python中的Spreadsheet API從Google電子表格中提取數據。我可以使用for循環在命令行上打印電子表格的每一行,但其中一些文本包含符號,例如攝氏度符號(小圓圈)。當我在命令行上打印這些行時,我想將它們寫入文件。但是當我這樣做時,我得到了不同的Unicode錯誤。我嘗試通過手動解決它,但有太多:Python將字符串保存到文件。 Unicode錯誤

current=current.replace(u'\xa0',u'') 
current=current.replace(u'\u000a',u'p') 
current=current.replace(u'\u201c',u'\"') 
current=current.replace(u'\u201d',u'\"') 
current=current.replace(u'\u2014',u'-') 

我該怎麼做,我不會得到錯誤? 例如

UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 1394: ordinal not in range(128)

current=current.replace(u'\u0446',u'u') 

回答

-1
''.join(c for c in current if ord(c) < 128) 
+0

不確定@TylerDurden想擺脫`非ascii` chararters! – Stan 2011-12-17 09:38:44

0
import unicodedata 
decoded = unicodedata.normalize('NFKD', encoded).decode('UTF-8', 'ignore') 

我不是很完美確保在這種情況下正常化。此外,忽略選項意味着您可能會丟失一些信息,因爲解碼錯誤將被忽略。

相關問題