【问题标题】:Python 3 - reading utf-8 encoded csv into pandasPython 3 - 将 utf-8 编码的 csv 读入 pandas
【发布时间】:2021-02-07 11:29:40
【问题描述】:

我正在尝试将我的 utf-8 编码的 csv 文件与来自 Twitter(波兰语)的数据加载到 Python 3 中的 pandas 数据帧中。

这是我的 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

我该如何解决这个问题?

【问题讨论】:

  • csv 已损坏,因为它正在显式或隐式地对字节对象 (str(mybytes)) 进行字符串化。您需要修复该代码。
  • 您应该问的问题是“如何正确地将推文写入 CSV 文件?”

标签: python pandas csv encoding python-3.7


【解决方案1】:

你有字节字符串(出于某种原因)。要正确阅读,您需要:

  1. 将字符串计算为字节
  2. 将 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...

【讨论】:

  • @DeepSpace Literal_eval 将字符串计算为字节。 read_clipboard --> read_csv
猜你喜欢
  • 1970-01-01
  • 2018-06-13
  • 2014-07-01
  • 2023-03-27
  • 2015-03-04
  • 2021-04-18
  • 2015-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多