【发布时间】:2016-11-14 17:25:59
【问题描述】:
我无法做到这一点。我有一个 CSV 文件,其中已经编码了字符(我制作了一个较小的 CSV 文件进行测试,但原始文件更长):
伊斯坦 H\xe1ta M\xf6g\xf6tt
西格 R\xf3s
\xd3lafur
我无法解码这些字符串。我尝试通过简单地读取该行然后执行 line.decode('latin1') 对其进行解码,但它似乎不起作用。当我查看原始字符串时,我注意到这些字符被一个额外的反斜杠转义了。因此,我尝试在解码之前先对原始字符串进行 unicode-escape;这似乎也不起作用。字符串保持原样(尽管在原始字符串中删除了额外的反斜杠)。
当我用示例项目对手动列表进行硬编码时,解码工作正常,我得到正确的字符。
所以,只有当我从 CSV 文件中读取它时,它才能正常工作。有人知道哪里出错了吗?
【问题讨论】:
-
这是 python 2.x 还是 3.x?
-
这是python 2.7
-
您最初是如何在文件中获取该文本的?它的双重编码。
-
这些数据不是我自己创建的。试图弄清楚如何从中获得正确的文本。为什么当我手动将它放入字符串/列表时它会很好,但是当我从 CSV 中读取它时却不起作用?
-
如果您将
foo = "Isten H\xe1ta M\xf6g\xf6tt"放入python 脚本,python 会以与bar = "one\ntwo\nthree\n"中的换行符相同的方式对其进行转义。如果将完全相同的文本放在 csv 文件中,则 python 编译器不会对其进行解析,也不会进行转义。这就是string_escape编码的用途。似乎有人使用 python 打印字符串列表,然后将它们复制/粘贴到文件中。不要那样做!