Мне нужно работать с текстом, словами, такими как сравнение слов со словарем ... и у меня проблема с кодировкой. txt-файл - utf-8, код тоже utf-8. Проблема заключается в том, чтобы расщепляться на слова с такими символами, как š, č, ť, á, ... Я пытался кодировать и декодировать и искать в Интернете, но я не знаю, что с ним делать. Я посмотрел на файловую систему, это mbcs, а defaultencoding - utf-8. Можете ли вы мне помочь? Код ниже - первая версия.неправильная кодировка текста в python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
f = open("text.txt", "r+")
text = f.read()
sentences = re.split("[.!?]\s", text)
words = re.split("\s", sentences[0])
print sentences[0]
print words
и результат:
Nexus 5 patrí v sučasnosti medzi a najlepšie aj smartfóny
['\xef\xbb\xbfNexus', '5', 'patr\xc3\xad', 'su\xc4\x8dasnosti', 'medzi', 'najlep\xc5\xa1ie', 'smartf\xc3\xb3ny']
Когда я использую:
f = codecs.open("text.txt", "r+", encoding="utf-8")
результат:
Nexus 5 patrí v sučasnosti medzi a najlepšie aj smartfóny
[u'\ufeffNexus', u'5', u'patr\xed', u'su\u010dasnosti', u'medzi', u'najlep\u0161ie', u'smartf\xf3ny']
и мне нужен выход, как:
['Nexus', '5', 'patrí', 'v', 'súčastnosti',....]
У вас есть строки в Юникоде в списке. Если вы не хотите печатать представления, не печатайте контейнер списка, а каждый элемент отдельно. –
ОК теперь я вижу, но когда я хочу сравнить каждый элемент списка со словарем, чтобы найти совпадение, он будет работать нормально? – TheBP
Вы должны использовать литералы unicode для тестирования, но да. –