Как избавиться от этих символов из текстовых полей при чтении файла CSV? - PullRequest
0 голосов
/ 06 октября 2018

Каждый раз, когда я открываю CSV в Python, я постоянно вижу эти странные символы, которые представляют знаки препинания и специальные символы в текстовых полях.Например:

import pandas as pd
import csv
data = pd.read_csv("Test.csv", encoding="ISO-8859-1") #utf-8 encoding doesn't work
data.head()

В столбце с текстом будет что-то вроде "Assassinâ \ x80 \ x99s creed originings".

Так что я думаю, вы удивляетесь, как я создал CSV впервое место?

Вот код, который я использовал:

def updateSubs_file():
    upload_count = 0
    import csv
    location = "csvs"
    filename = "Test.csv"
    file = location + filename
    with open(file, 'w', newline='', encoding='utf-8') as file: 
        a = csv.writer(file, delimiter=',')
        headers = ["Title","Url","Author","Score"]
        a.writerow(headers)
        for sub in subStats:
            a.writerow(subStats[sub][0])
            upload_count+=1

        print(str(upload_count) + " rows have been uploaded")

updateSubs_file()

Итак, я вижу, что уже существует несоответствие кодировки при создании csv и открытии, но я изначально добавил аргументы encoding = "" визбежать ошибок декодирования Unicode.Это может / не может быть фактором в моей проблеме.

Буду признателен за помощь в определении того, что происходит с моими csvs, когда я загружаю / читаю их в Python.

1 Ответ

0 голосов
/ 07 октября 2018

UTF-8 работает .Вы написали это с помощью UTF-8, поэтому расшифруйте его с помощью UTF-8.Например, отмена некорректного ISO-8859-1 декодирования и повторного декодирования с помощью utf8:

>>> s='Assassinâ\x80\x99s creed origins'.encode('iso-8859-1').decode('utf8')
'Assassin’s creed origins'

Если у вас возникли проблемы с декодированием того, что вы написали с помощью utf8, покажите точный код с образцом ввода и вывода для воспроизведения проблемы.

...