python中的错误文本编码

python中的错误文本编码,python,python-2.7,encoding,Python,Python 2.7,Encoding,我需要处理文本,比如用字典比较单词。。。我在编码方面有问题。txt文件是utf-8,代码也是utf-8。问题是当拆分为具有诸如š、ť、á等字符的单词时,。。。我试着在网上编码、解码和搜索,但我不知道该怎么办。我研究了文件系统编码,它是mbcs,默认编码是utf-8。有人能帮我吗?下面的代码是第一个版本 #!/usr/bin/env python # -*- coding: utf-8 -*- f = open("text.txt", "r+") text =

我需要处理文本,比如用字典比较单词。。。我在编码方面有问题。txt文件是utf-8,代码也是utf-8。问题是当拆分为具有诸如š、ť、á等字符的单词时,。。。我试着在网上编码、解码和搜索,但我不知道该怎么办。我研究了文件系统编码,它是mbcs,默认编码是utf-8。有人能帮我吗?下面的代码是第一个版本

    #!/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']
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']
当我使用:

f = codecs.open("text.txt", "r+", encoding="utf-8")
结果是:

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']
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',....]

编码处理是正确的,
u'patr\xed'
只是Python中unicode字符串的表示形式。尝试在shell中打印u'patr\xed',以便自己查看


话虽如此,由于您似乎想将其用作字典,因此使用该模块将unicode字符串规范化为ASCII可能会很有用。

列表中有unicode字符串。如果不想打印表示,请不要打印列表容器,而是单独打印每个元素。现在我明白了,但当我想将列表的每个元素与字典进行比较以找到匹配项时,它是否可以正常工作?您可以使用unicode文本进行测试,但可以。我想将其与distionary进行比较以找到匹配项。如何在windows中安装unicode?只有Linux软件包。我认为最好的方法是运行命令
pip install unidecode
。Unidecode非常适合您的需要,您可以使用它将字典中的单词规范化为ASCII,然后您可以对要查找的单词执行相同的操作,并查看它是否在您的字典中。