Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unicode CSV Python_Python_Csv_Unicode - Fatal编程技术网

Unicode CSV Python

Unicode CSV Python,python,csv,unicode,Python,Csv,Unicode,我没办法把这个弄对。我有一个CSV文件,其中已经对字符进行了编码(我制作了一个较小的CSV文件进行测试,但原始文件要长得多): Isten H\xe1ta M\xf6g\xf6tt Sigur R\xf3s \xd3lafur 我无法解码这些字符串。我试着通过简单的读一行来解码它,然后执行line.decode('latin1'),但它似乎不起作用。当我查看原始字符串时,我注意到字符被一个额外的反斜杠转义。因此,在解码之前,我尝试先对原始字符串进行unicode转义;这似乎也不起作用。字符串保持

我没办法把这个弄对。我有一个CSV文件,其中已经对字符进行了编码(我制作了一个较小的CSV文件进行测试,但原始文件要长得多):

Isten H\xe1ta M\xf6g\xf6tt
Sigur R\xf3s
\xd3lafur

我无法解码这些字符串。我试着通过简单的读一行来解码它,然后执行line.decode('latin1'),但它似乎不起作用。当我查看原始字符串时,我注意到字符被一个额外的反斜杠转义。因此,在解码之前,我尝试先对原始字符串进行unicode转义;这似乎也不起作用。字符串保持原样(在原始字符串中删除了额外的反斜杠)

当我用示例项硬编码一个手动列表时,解码工作正常,我得到了正确的字符

所以,当我从CSV文件中读取它时,我才无法让它工作。有人知道哪里出了问题吗

>>> mystring = 'Sigur R\xf3s'
>>> print mystring
Sigur R�s
>>> print mystring.decode('latin-1')
Sigur Rós
在Python2.7上似乎工作得很好,您能展示一些代码和它产生的错误吗


在Python2.7上似乎工作得很好,能否显示一些代码及其生成的错误?

字符在内存和文件中有不同的表示形式。字符串可以通过多种方式编码,包括
拉丁-1
编码或
utf-8
,但在本例中,如果我们看到一个文本
\xf6
,我们得到的是一个已转义的字符串。我们可以通过破解逃逸来解决这个问题

>>> print open('data.csv').readline().decode('string_escape')
Isten H�ta M�g�tt
但这只让我们走了一半,我们仍然被编码。现在是双重解码

>>> print open('data.csv').readline().decode('string_escape').decode('latin1')
Isten Háta Mögött

明白了!问题在于写入文件的内容。

字符在内存和文件中有不同的表示形式。字符串可以通过多种方式编码,包括
拉丁-1
编码或
utf-8
,但在本例中,如果我们看到一个文本
\xf6
,我们得到的是一个已转义的字符串。我们可以通过破解逃逸来解决这个问题

>>> print open('data.csv').readline().decode('string_escape')
Isten H�ta M�g�tt
但这只让我们走了一半,我们仍然被编码。现在是双重解码

>>> print open('data.csv').readline().decode('string_escape').decode('latin1')
Isten Háta Mögött

明白了!问题在于写入文件的内容。

这是python 2.x还是3.x?这是python 2.7,您最初是如何在文件中获得该文本的?它是双重编码的,不是我自己创造的。试图找出如何从中获得正确的文本。为什么当我手动将其放入字符串/列表中时效果很好,但当我从CSV中读取它时却不起作用?如果在python脚本中放入
foo=“Isten H\xe1ta M\xf6g\xf6tt”
,python将以转换
bar=“one\ntwo\ntree\n”
中的新行的方式对其进行替换。如果将完全相同的文本放在csv文件中,python编译器将不会解析该文本,也不会进行任何删除。这就是
string\u escape
编码的目的。似乎有人使用python打印字符串列表,然后将它们复制/粘贴到文件中。不要那样做!这是Python2.x还是3.x?这是Python2.7,您首先是如何在文件中获得该文本的?它是双重编码的,不是我自己创造的。试图找出如何从中获得正确的文本。为什么当我手动将其放入字符串/列表中时效果很好,但当我从CSV中读取它时却不起作用?如果在python脚本中放入
foo=“Isten H\xe1ta M\xf6g\xf6tt”
,python将以转换
bar=“one\ntwo\ntree\n”
中的新行的方式对其进行替换。如果将完全相同的文本放在csv文件中,python编译器将不会解析该文本,也不会进行任何删除。这就是
string\u escape
编码的目的。似乎有人使用python打印字符串列表,然后将它们复制/粘贴到文件中。不要那样做!这就是我尝试过的,然后它就成功了。从CSV上阅读时,我无法让它工作。这是我尝试过的,然后它就工作了。从CSV读取时,我无法使其工作