我正在尝试使用以下代码清理西班牙语文本:
import re
import unicodedata
file = open("dirty.txt").readlines()
archivo = open("cleanText.txt", "w")
textLowerCase = file[i].lower()
unicodeText = textLowerCase.decode('unicode-escape')
textWithoutAccents = unicodedata.normalize('NFKD', unicodeText).encode('ASCII', 'ignore')
textWithoutSymbols = re.sub(r'[^\w]', ' ', textWithoutAccents)
archivo.write(textWithoutSymbols)
我的输入文字如下:
"anunciarán la realización de una interpelación"
我的愿望输出是:
"anunciaran la realizacion de una interpelacion"
但是我的代码我得到了下一个结果:
"anunciarAn la realizaciA3n de una interpelaciA3n"
你知道我怎么解决这个问题?
答案 0 :(得分:3)
这正是 unidecode 包所做的:https://pypi.python.org/pypi/Unidecode
自述文件:
模块导出一个函数,该函数接受Unicode对象(Python 2.x)或字符串(Python 3.x)并返回一个字符串(可以在Python 3.x中编码为ASCII字节):
(\d+)
编辑:
您的确切示例:
>>> from unidecode import unidecode
>>> unidecode(u'ko\u017eu\u0161\u010dek')
'kozuscek'
>>> unidecode(u'30 \U0001d5c4\U0001d5c6/\U0001d5c1')
'30 km/h'
>>> unidecode(u"\u5317\u4EB0")
'Bei Jing '
编辑2:
如果您使用的是Python 2,请不要忘记:
>>> from unidecode import unidecode
>>> unidecode("anunciarán la realización de una interpelación")
'anunciaran la realizacion de una interpelacion'
或:from __future__ import unicode_literals
前缀:u