Python 3 - 将 utf-8 编码的 csv 读入 pandas
Python 3 - reading utf-8 encoded csv into pandas
我正在尝试将我的 utf-8 编码的 csv 文件与来自 Twitter(波兰语)的数据加载到 Python 中的 pandas 数据帧 3.
这是我的一份 csv:
2020-03-28 20:26:57,"b'Oj b\xc4\x99dzie impreza, oj b\xc4\x99dzie. #WyboryPrezydenckie2020 #Wybory2020 #Wybory\xc5\x9amierci'"
2020-03-28 20:26:41,"b'Skoro Prezydent ju\xc5\xbc mi\xc4\x99dzy wierszami przemyca, \xc5\xbce wybory mog\xc4\x85 by\xc4\x87 prze\xc5\x82o\xc5\xbcone, to nale\xc5\xbcy czyta\xc4\x87, \xc5\xbce wybory b\xc4\x99d\xc4\x85 prze\xc5\x82o\xc5\xbcone, a i pewnie zostanie to poprzedzone kwiecistym or\xc4\x99dziem Prezydenta w pelerynie zbawcy narodu. #koronowiruswpolsce #WyboryPrezydenckie2020'"
2020-03-28 20:24:50,"b'Idea i miara. Pomoc wyborc\xc3\xb3w i narodu g\xc5\x82osuj\xc4\x85cego dla medycyny przez #podatek_dla_demokracji, 360 mln z\xc5\x82 na subwencje dla partii i na #WyboryPrezydenckie2020 #Wybory2020 #wybory. STOP-dla-Subwencji dla partii i na wybory z mixu podatkowego.\n@tvp_info\n@Cyfrowy_Polsat\n@tvn24\n#POPiS'"
我试图以这种方式加载它:
df = pd.read_csv('WyboryPrezydenckie2020.csv', names=["date", "tweet"], encoding='utf-8')
但结果是这样的:
date tweet
0 2020-03-28 20:26:57 b'Oj b\xc4\x99dzie impreza, oj b\xc4\x99dzie. ...
1 2020-03-28 20:26:41 b'Skoro Prezydent ju\xc5\xbc mi\xc4\x99dzy wie...
2 2020-03-28 20:24:50 b'Idea i miara. Pomoc wyborc\xc3\xb3w i narodu...
3 2020-03-28 20:22:34 b'RT @wkrawcz1: Kandydat @szymon_holownia m\x...
4 2020-03-28 20:22:03 b'RT @wkrawcz1: Kandydat @szymon_holownia m\x...
而且我的推文似乎根本没有被解码。例如,第一条推文应该是这样的:
Oj będzie impreza, oj będzie. #WyboryPrezydenckie2020 #Wybory2020 #WyboryŚmierci
我该如何解决这个问题?
您有字节字符串(出于某种原因)。要正确阅读它,您需要:
- 将字符串计算为字节
- 将 unicode 字节解码为字符串:
from ast import literal_eval
df = pd.read_csv('WyboryPrezydenckie2020.csv', names=["date", "tweet"], converters={"tweet":lambda x:literal_eval(x).decode("utf8")})
print(df)
date tweet
0 2020-03-28 20:26:57 Oj będzie impreza, oj będzie. #WyboryPrezydenc...
1 2020-03-28 20:26:41 Skoro Prezydent już między wierszami przemyca,...
2 2020-03-28 20:24:50 Idea i miara. Pomoc wyborców i narodu głosując...
我正在尝试将我的 utf-8 编码的 csv 文件与来自 Twitter(波兰语)的数据加载到 Python 中的 pandas 数据帧 3.
这是我的一份 csv:
2020-03-28 20:26:57,"b'Oj b\xc4\x99dzie impreza, oj b\xc4\x99dzie. #WyboryPrezydenckie2020 #Wybory2020 #Wybory\xc5\x9amierci'"
2020-03-28 20:26:41,"b'Skoro Prezydent ju\xc5\xbc mi\xc4\x99dzy wierszami przemyca, \xc5\xbce wybory mog\xc4\x85 by\xc4\x87 prze\xc5\x82o\xc5\xbcone, to nale\xc5\xbcy czyta\xc4\x87, \xc5\xbce wybory b\xc4\x99d\xc4\x85 prze\xc5\x82o\xc5\xbcone, a i pewnie zostanie to poprzedzone kwiecistym or\xc4\x99dziem Prezydenta w pelerynie zbawcy narodu. #koronowiruswpolsce #WyboryPrezydenckie2020'"
2020-03-28 20:24:50,"b'Idea i miara. Pomoc wyborc\xc3\xb3w i narodu g\xc5\x82osuj\xc4\x85cego dla medycyny przez #podatek_dla_demokracji, 360 mln z\xc5\x82 na subwencje dla partii i na #WyboryPrezydenckie2020 #Wybory2020 #wybory. STOP-dla-Subwencji dla partii i na wybory z mixu podatkowego.\n@tvp_info\n@Cyfrowy_Polsat\n@tvn24\n#POPiS'"
我试图以这种方式加载它:
df = pd.read_csv('WyboryPrezydenckie2020.csv', names=["date", "tweet"], encoding='utf-8')
但结果是这样的:
date tweet
0 2020-03-28 20:26:57 b'Oj b\xc4\x99dzie impreza, oj b\xc4\x99dzie. ...
1 2020-03-28 20:26:41 b'Skoro Prezydent ju\xc5\xbc mi\xc4\x99dzy wie...
2 2020-03-28 20:24:50 b'Idea i miara. Pomoc wyborc\xc3\xb3w i narodu...
3 2020-03-28 20:22:34 b'RT @wkrawcz1: Kandydat @szymon_holownia m\x...
4 2020-03-28 20:22:03 b'RT @wkrawcz1: Kandydat @szymon_holownia m\x...
而且我的推文似乎根本没有被解码。例如,第一条推文应该是这样的:
Oj będzie impreza, oj będzie. #WyboryPrezydenckie2020 #Wybory2020 #WyboryŚmierci
我该如何解决这个问题?
您有字节字符串(出于某种原因)。要正确阅读它,您需要:
- 将字符串计算为字节
- 将 unicode 字节解码为字符串:
from ast import literal_eval
df = pd.read_csv('WyboryPrezydenckie2020.csv', names=["date", "tweet"], converters={"tweet":lambda x:literal_eval(x).decode("utf8")})
print(df)
date tweet
0 2020-03-28 20:26:57 Oj będzie impreza, oj będzie. #WyboryPrezydenc...
1 2020-03-28 20:26:41 Skoro Prezydent już między wierszami przemyca,...
2 2020-03-28 20:24:50 Idea i miara. Pomoc wyborców i narodu głosując...