2017-07-06 53 views
0

我的node.js服務器輸出以下陣列:非ASCII字符「 XC5」破python腳本

["Daniel Guillen","Sarah Tremaine Milam","Karen Ann"...."Chris Doyle","Katie Gould"] 

我試圖使用python腳本將其轉換爲csv文件,但是當我宣佈在我的.py文件數組我得到以下錯誤:

SyntaxError: Non-ASCII character '\xc5' in file toCSV.py 

該陣列由來自Facebook的人的名字,這樣有人的地方有他們的名字一個奇怪的字符。手動搜索太長。

您如何建議解決此問題或找到違規字符?在交給python之前在JavaScript中遍歷數組也是一種選擇。

+0

[務實的Unicode,或者,我該如何阻止痛苦?](http://pyvideo.org/pycon-us-2012/pragmatic-unicode-or-how-do-i-stop-the-pain。 html) - 我認爲這是一個基於Python 2.7的討論,但一些想法轉移到了3.x.文檔中的[Unicode HOWTO](https://docs.python.org/3/howto/unicode.html)。 – wwii

+1

切換到Python 3.它默認爲UTF-8源文件,所以你不必去申報編碼的麻煩。 – Ryan

回答

1

您可以使用編解碼器(您必須導入它)讀取utf8(非ascii)字符。像這樣:

csvfile = codecs.open(outputFileName+".csv", 'w+', 'utf8') 

這將寫入輸出文件。如果你想讀取文件,只需將'w +'改爲'r'即可。 對於單個字符串,您也可以使用方法「string」.encode('utf8') 這解決了從其他文件讀取時的問題。如果你正在運行的文件中有它,你需要通過把

# -*- coding: utf-8 -*- 

在文件

+1

這不會是SyntaxError的原因。 – Ryan

+0

如果正在從另一個文件讀取它,則解決了該問題。如果你使用的是你正在運行的文件,你需要在文件 –

+1

@CaryShindell的頂部加上'# - * - coding:utf-8 - * - '來設置編碼。將其標記爲已接受 - 謝謝! –

2

的頂部如果陣列嵌入python腳本設置編碼,那麼你可能需要設置在python文件的開頭編碼。爲此,請在任何代碼之前添加以下行:

# -*- coding: utf-8 -*- 

這將源代碼編碼設置爲UTF-8。