Не удается разобрать файл с кодировкой latin-1 - PullRequest
2 голосов
/ 23 июня 2019

Я пытаюсь проанализировать большой файл твитов из базы данных Stanford Sentiment (см. Здесь: http://help.sentiment140.com/for-students/), со следующим кодом:

def init_process(fin, fout):
    outfile = open(fout, 'a')
    with open(fin, buffering=200000, encoding='latin-1') as f:
        try:
            for line in f:
                line = line.replace('"', '')
                initial_polarity = line.split(',')[0]
                if initial_polarity == '0':
                    initial_polarity = [1, 0]
                elif initial_polarity == '4':
                    initial_polarity = [0, 1]

                tweet = line.split(',')[-1]
                outline = str(initial_polarity) + ':::' + tweet
                outfile.write(outline)
        except Exception as e:
            print(str(e))
    outfile.close()

init_process('training.1600000.processed.noemoticon.csv','train_set.csv')

Я столкнулся сследующая проблема:

'ascii' codec can't encode characters in position 12-14: ordinal not in range(128)

, которая не имеет смысла, так как я открываю файл с кодировкой латинского 1. Как мне остановить эту ошибку и успешно проанализировать файл?

1 Ответ

4 голосов
/ 23 июня 2019

Это, вероятно, кодировка выходного файла, которая все еще ASCII. Вы также должны открыть его с правильной кодировкой (не обязательно должен быть латиницей-1, вероятно, utf-8 более подходит в зависимости от вашей среды).

За комментарий от Åsmund: кодировка файла зависит от конкретной локали, вам, вероятно, следует рассмотреть возможность изменения вашей локали на что-то, что может обрабатывать текст не-ASCII.

...