我使用Python 2.7的unicodecsv嵌入式模块来读取包含28种不同语言的单词列的CSV文件,其中一些文件有重音和/或完全利用不同的字母/字符系统。我加载的CSV将UTF-8转义字符读取/解码为本机字符
with open(sourceFile, 'rU') as keywordCSV:
keywordList = csv.reader(keywordCSV, encoding='utf-8-sig', dialect=csv.excel)
但keywordList
阅读目前正在生产的Unicode转义字符/序列,而不是本地字符符号。虽然这并不理想(理想情况下,我可以从一开始就将csv中的unicode加载为本地字符符号),但只要我可以在脚本中稍后将这些符号转换为本地字符符号(在导出为无论哪种文件类型都会使这个最简单)。这是如何做的,或者最好是理想的情况?我试图使用变通方法,如these无济于事,我仍然不确定这是脚本中的解释器问题还是编码问题。
读取文件时,我已经使用utf-8-sig
的原因是,没有这样做,是导致(BOM
)
UnicodeEncodeError: 'ascii' codec can't encode character u'\ufeff' in position 155:
,但是现在已经停止发生的原因不为人知我。同样,打开文件不这样做,当我使用'rU'
产生
_csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
,但我不知道如果这些都是适当的。
在this问题,通过在天然字符中的一个的结果打印每一个字符一个正在打印(一些也适用于从终端运行时我的代码),是有通过人物迭代和转换每一个的方式到它的本土特征?
对于在这个已经饱和的话题上发布另一个问题的道歉,但我还没有能够得到其他人的建议,为这种情况下工作。也许我一直在寻找错误的地方,试图解码脚本末尾的编码csv输出,而问题出在我的csv.reader
的encoding
。任何帮助将非常感激。
编解码器可能是更好的选项来读取非ascii字符的文件。 https://docs.python.org/2/library/codecs.html, –
检查一下,它与你有关。 https://codepoints.net/U+FEFF –
我试过多个'.encode()'和'.decode()'组合,但没有成功。你将如何去实现编解码器? –