У меня проблемы с кодом PyCharm. Я пытаюсь прочитать файл csv, но получаю ошибку Unicode, когда он не может прочитать определенные c байтов в позициях - PullRequest
0 голосов
/ 12 июля 2020

Мой код выглядит так: я использую PyCharm в качестве своей IDE, а файл csv, который я использую, взят из MS Excess. Я закодировал csv как UTF-8. Я пытаюсь прочитать файл, используя pandas. Я хочу иметь возможность различать sh между объектами и int при вызове df.info (). По этой же причине я не изменил его на 'latin-1' или 'ISO ...'

import pandas as pd  
import numpy as np  
import matplotlib.pyplot as plt  
plt.style.use('fivethirtyeight')  
cols = ['sentiment','id','date','query_string','user','text']  
df = pd.read_csv("trainingandtestdata\\training.1600000.processed.noemoticon.csv", header=None, 
names=cols, encoding='utf-8')#low_memory=False dtype='unicode' encoding='latin1'  
df.head()  
df.info()  
df.sentiment.value_counts()

Моя ошибка выглядит так: Как исправить невозможность декодирования байтов в позициях от xxxx до xxxx?

"C:\Users\dashg\PycharmProjects\Twitter Sentiment\venv\Scripts\python.exe" 
"C:/Users/dashg/PycharmProjects/Twitter Sentiment/Reviewer.py"   
Traceback (most recent call last):   
  File "C:/Users/dashg/PycharmProjects/Twitter Sentiment/Reviewer.py", line 6, in <module>  
    df = pd.read_csv("trainingandtestdata\\training.1600000.processed.noemoticon.csv", header=None,  
names=cols, encoding='utf-8')#low_memory=False dtype='unicode' encoding='latin1'  
  File "C:\Users\dashg\PycharmProjects\Twitter Sentiment\venv\lib\site- 
packages\pandas\io\parsers.py",       line 676, in parser_f      
    return _read(filepath_or_buffer, kwds)    
  File "C:\Users\dashg\PycharmProjects\Twitter Sentiment\venv\lib\site- 
packages\pandas\io\parsers.py",       line 454, in _read   
    data = parser.read(nrows)   
  File "C:\Users\dashg\PycharmProjects\Twitter Sentiment\venv\lib\site- 
packages\pandas\io\parsers.py",  
line 1133, in read  
    ret = self._engine.read(nrows)  
  File "C:\Users\dashg\PycharmProjects\Twitter Sentiment\venv\lib\site- 
packages\pandas\io\parsers.py",   line 2037, in read  
    data = self._reader.read(nrows)  
  File "pandas\_libs\parsers.pyx", line 860, in pandas._libs.parsers.TextReader.read  
  File "pandas\_libs\parsers.pyx", line 875, in pandas._libs.parsers.TextReader._read_low_memory  
  File "pandas\_libs\parsers.pyx", line 929, in pandas._libs.parsers.TextReader._read_rows  
  File "pandas\_libs\parsers.pyx", line 916, in pandas._libs.parsers.TextReader._tokenize_rows  
  File "pandas\_libs\parsers.pyx", line 2063, in pandas._libs.parsers.raise_parser_error      
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 51845-51846: invalid continuation 
byte

Process finished with exit code 1

Ответы [ 3 ]

0 голосов
/ 22 июля 2020

У меня была та же проблема, но в моем случае решение было очень простым. Мой ide - PyCharm 2020.1, а .csv имеет кодировку iso-8859-1, я пробовал все безуспешно, поэтому решил проверить свою конфигурацию ide. Я зашел:

  1. Файл
  2. Настройки
  3. Левый столбец: Редактор
  4. В редакторе: Кодировка файла Затем я добавляю свой файл .csv с кнопка: +, которая находится справа, и, наконец, измените конфигурацию ide. Измените все это на iso, потому что по умолчанию было в utf-8 и используйте точный символ для работы с файлом, в моем случае это:?. Надеюсь на эту работу
0 голосов
/ 22 июля 2020

Лучше сохранить этот csv в xlsx и читать как

pd.read_excel

0 голосов
/ 12 июля 2020

ваш файл не имеет формата кодировки utf-8 при использовании метода encoding='utf-8' в read_csv. используйте другой метод кодирования, чтобы решить проблему, например 'latin' или 'ISO-8859-1'. Я отсылаю вас к этой ссылке за помощью.

худший сценарий, если ничего из этого не работает, вы можете прочитать файл в режиме 'rb' (open(file, 'rb')) и проанализировать его самостоятельно путем разделения каждой строки данных с помощью разделителя csv!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...