Строка в пандах не печатается правильно - PullRequest
1 голос
/ 11 марта 2019

Я использую панды для загрузки в CSV-файл, содержащий сообщения Twitter

corpus = pd.read_csv(data_path, encoding='utf-8')

Вот пример данных

label,date,comment
0,20120528192215Z,"""i really don't understand your point.\xa0 It seems that you are mixing apples and oranges."""

Когда я пытаюсь напечатать комментарий, я получаю:

print(corpus.iloc[1]['comment'])
>> "i really don't understand your point.\xa0 It seems that you are mixing apples and oranges."

\ xa0 все еще находится на выходе. Но если я вставлю строку из файла и напечатаю ее, я получу правильный вывод

print("""i really don't understand your point.\xa0 It seems that you are mixing apples and oranges.""")
>> i really don't understand your point.  It seems that you are mixing apples and oranges.

Я хотел бы знать, почему два выхода отличаются и есть ли способ получить строку в пандах для правильной печати? Я хотел бы, если есть лучшее решение, чем просто заменить, так как данные содержат много других представлений Unicode, таких как \ xe1, \ u0111, \ u01b0, \ u1edd и т. Д.

1 Ответ

0 голосов
/ 11 марта 2019

Файл входных данных, который загружает pandas, должен быть в ASCII. Если бы это было в UTF-8, кодировщик UTF-8 правильно загрузил бы байты UTF-8. Если файл не в формате UTF-8, pandas все равно будет загружаться, а экранированный \ xa0 будет загружен буквально и не будет переведен в нужный неразрывный пробел Unicode.

Причина, по которой это работает при копировании / вставке, связана с тем, что python видит экранирование в строковом литерале.

import pandas as pd
data = {u"label": 0, u"date": u"20120528192215Z", u"comment": u"\"i really don't understand your point.\xa0 It seems that you are mixing apples and oranges.\""}
df = pd.DataFrame(index=[1], data=data)
df.to_csv("/tmp/corpusutf8.csv", index=False, encoding="utf-8")
pd.read_csv("/tmp/corpusutf8.csv")
                                             comment             date  label
0  "i really don't understand your point.  It see...  20120528192215Z      0
df['comment']
1    "i really don't understand your point.  It see...
Name: comment, dtype: object

file /tmp/corpus.csv
/tmp/corpusutf8.csv: UTF-8 Unicode text

Если csv создается с \ xa0 и является ascii, Pandas загружается как ascii, хотя задана кодировка utf-8.

cat /tmp/corpusascii.csv
label,date,comment
0,20120528192215Z,"""i really don't understand your point.\xa0 It seems that you are mixing apples and oranges."""
file !$
file /tmp/corpusascii.csv
/tmp/corpusascii.csv: ASCII text
df1 = pd.read_csv("/tmp/corpusascii.csv", encoding="utf-8")
df1
   label             date                                            comment
0      0  20120528192215Z  "i really don't understand your point.\xa0 It ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...