将UTF8转义字符读入/解码为本机字符

2024-10-02 14:17:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python2.7的unicodecsv插件模块来读取一个CSV文件,该文件包含28种不同语言的单词列,其中一些是重音和/或使用完全不同的字母/字符系统。我正在加载CSV

with open(sourceFile, 'rU') as keywordCSV:
    keywordList = csv.reader(keywordCSV, encoding='utf-8-sig', dialect=csv.excel)

但是从keywordList读取当前生成的是unicode转义字符/序列,而不是本机字符符号。虽然这并不理想(理想情况下,我可以从一开始就将unicode作为本机字符符号加载到csv中),但只要我以后可以在脚本中将这些符号转换为本机字符符号(当导出到任何文件类型时,这都会变得很容易),这是可以接受的。如何做到这一点,或者最好是理想的情况?我尝试过使用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.readerencoding。任何帮助都将不胜感激。你知道吗


Tags: 文件csv方法in脚本ru符号情况
1条回答
网友
1楼 · 发布于 2024-10-02 14:17:11

您看到的是Unicode字符的repr()。在Python2.7中,repr()通常只显示ASCII字符。ASCII范围以外的字符使用转义符显示。这是为了调试目的,使非打印字符或当前代码页不支持的字符可见。如果要查看呈现的字符,请打印它们,但请注意,终端的配置代码页不支持的字符可能无法工作:

>>> s = u'\N{LATIN SMALL LETTER E WITH ACUTE}'
>>> s
u'\xe9'
>>> print repr(s)
u'\xe9'
>>> print s
é
>>> print unicode(s)
é

在以下情况下,配置的代码页437不支持该字符:

>>> s = u'\N{HORIZONTAL ELLIPSIS}'
>>> s
u'\u2026'
>>> print s
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\dev\Python27\lib\encodings\cp437.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u2026' in position 0: character maps to <undefined>

相关问题 更多 >

    热门问题