如何使用Pandas读取包含特殊字符的文件?

3

我有一个(编码/解码)问题。

尽管我使用utf-8将文件读入下面的代码中的DataFrame中,但输出的字符看起来非常不同。 语言是法语。如果您能帮忙解决这个问题,我将非常感激。谢谢!

第一行数据如下:

b"Sur la #route des stations ou de la maison\xf0\x9f\x9a\x98\xe2\x9d\x84\xef\xb8\x8f?\nCet apr\xc3\xa8s-midi, les #gendarmes veilleront sur vous, comme dans l'#Yonne, o\xc3\xb9 les exc\xc3\xa8s de #vitesse & les comportements dangereux des usagers de l'#A6 seront verbalis\xc3\xa9s\xe2\x9a\xa0\xef\xb8\x8f\nAlors prudence, \xc3\xa9quipez-vous & n'oubliez-pas la r\xc3\xa8gle des 3\xf0\x9f\x85\xbf\xef\xb8\x8f !"

import pandas as pd
data = pd.read_csv('C:\\Users\\Lenovo\\Desktop\\gendarmerie_tweets.csv', delimiter=";", encoding="utf-8")
data.head()

输出:

    text
0   b"Sur la #route des stations ou de la maison\x...
1   b"#Guyane Soutien \xc3\xa0 nos 10 #gendarmes e...
2   b'#CoupDeCoeur \xf0\x9f\x92\x99 Journ\xc3\xa9e...
3   b'RT @servicepublicfr: \xf0\x9f\x97\xb3\xef\xb...
4   b"\xe2\x9c\x85 7 personnes interpell\xc3\xa9es...

1
你能展示一下导致这个输出的csv文件的第一行吗? - Serge Ballesta
2
在加载数据之前,使用像chardet这样的工具来识别数据的真实编码。 - Sergey Bushmanov
真是个不错的工具,Sergey。我之前不知道它。 - Celius Stingher
1个回答

1

我认为在这种情况下,你可以尝试不同的编码方式。我相信可能会帮助你解决这个问题的解码参数是'ISO-8859-1'

data = pd.read_csv('C:\\Users\\Lenovo\\Desktop\\gendarmerie_tweets.csv', delimiter=";", encoding='iso-8859-1')

编辑:

给定读取文件的输出:

<_io.TextIOWrapper name='C:\\Users\\Lenovo\\Desktop\\gendarmerie_tweets.csv' mode='r' encoding='cp1254'>

从Python的编解码器 cp1254 别名 windows-1254 是土耳其语,因此我建议尝试使用 latin5windows-1254,但这些选项似乎都没有帮助。


我经常使用latin1,但输出明确包含一些utf-8编码的字节。如果在OP的代码中将utf8更改为latin1,我会感到惊讶,因为这不会解决任何问题... - Serge Ballesta
ISO-8859-15 对我很有帮助,而标准的latin1 utf8则无法满足我的需求。 - chris
我相信ISO-8859-15可能是关键。 - Celius Stingher
首先感谢您的回答,但是“latin1”和“ISO 8859-1”给出了相同的输出。 - Emre Cihan Ateş
2
你试过ISO-8859-15吗?此外,chardet给出的结果是什么? - Celius Stingher
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接