2017-01-16 10 views
1

У меня есть файл с большим количеством записей о Нобелевских премиях. Я чем преобразовать этот файл в список, как это:Специальные символы в python

file = open(path, 'r') 
file.readline() 
content = [] 
for line in file: 
    line = line.replace('\n', '') 
    content.append(line.split(';')) 

content = check(content, 'röntgen') 

После этого у меня есть функция, которая принимает этот список и другой аргумент и проверяет, содержит ли список этот аргумент. Однако, если аргумент принимает особый характер как Ö он doen't работу, потому что, когда файл читается питон сохраняет его любит: ö

def check(content, attr): 
reducedList = [] 
for i in range(len(content)): 
    curr = content[i][4] 
    if curr.find(attr) != -1: 
     reducedList.append(content[i]) 
return reducedList 

с:

curr = 'voor hun verdiensten op het gebied van de analyse van de kristalstructuur door middel van röntgenstraling' 
attr = 'röntgen' 

Я попытался преобразовать его с utf-8, но это, похоже, не помогает. у кого-нибудь есть решение?

+0

попробуйте кодировку iso-8859-1 – Chedy2149

+0

Являются ли ваши файлы python и ваш текстовый файл закодированным с использованием UTF-8? – Guillaume

+0

Файл python кодируется с помощью # - \ * - кодирования: utf-8 - \ * - , а текстовый файл кодируется в utf-8 –

ответ

0

Решение заменить open(path,’r’,) с open(path,’r’,encodeing=’utf-8’) Если добавить де encodeing параметр питона удостоверюсь де файла считывается в UTF-8, так, если сравнивать строки они действительно одна и та же.

1

Это происходит потому, что вы используете Python 2, скорее всего, в Windows, и ваш файл закодирован в utf-8, а не в латинском-1.

Лучшее, что вы делаете, вместо того, чтобы пытаться случайно его исправить (в том числе с учетом первых комментариев на ваш вопрос: все они случайные предложения), заключается в том, чтобы понять, что происходит. Итак, прекратите то, что вы пытаетесь сделать.

Прочитайте это: https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/

Затем переключитесь на Python3, если вы - которые должны обрабатывать большинство проблем автоматически.

Если вам не удастся должным образом обработать текстовое декодирование и повторное кодирование вручную - концепции указаны по ссылке выше. Предположим, ваши входные файлы в UTF-8

+0

Я использую компилятор python 3.5. и я полностью понимаю, что происходит. Я восстановился здесь не потому, что не знал, что происходит, я не знал, что я должен был делать с этой проблемой. –

 Смежные вопросы

  • Нет связанных вопросов^_^