python中的错误文本编码

2024-10-01 07:17:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要处理文本,比如用字典比较单词。。。我在编码方面有问题。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']

当我使用:

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

Tags: 代码textretxtnexus编码sentencesopen
1条回答
网友
1楼 · 发布于 2024-10-01 07:17:25

编码处理是正确的,u'patr\xed'只是Python中unicode字符串的表示。在shell中试试print u'patr\xed',自己看看。你知道吗

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

相关问题 更多 >