使用Python 3.3。我想做以下事情:
- 替换特殊字母字符,例如 e 锐号 (é) 和 o
带有基本字符的扬抑符 (ô)(例如,从 ô 到 o)
- 删除除字母数字和字母数字之间的空格之外的所有字符
人物
- 转换为小写
这是我到目前为止所拥有的:
mystring_modified = mystring.replace('\u00E9', 'e').replace('\u00F4', 'o').lower()
alphnumspace = re.compile(r"[^a-zA-Z\d\s]")
mystring_modified = alphnumspace.sub('', mystring_modified)
我该如何改进这个?效率是一个大问题,特别是因为我目前正在循环内执行操作:
# Pseudocode
for mystring in myfile:
mystring_modified = # operations described above
mylist.append(mystring_modified)
相关文件每个大约有 200,000 个字符。
>>> import unicodedata
>>> s='éô'
>>> ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn'))
'eo'
还请查看统一编码 https://pypi.python.org/pypi/Unidecode
Unicode 提供的是一条中间道路:函数 unidecode() 采用
Unicode 数据并尝试用 ASCII 字符表示它(即
0x00 和 0x7F 之间的通用可显示字符),其中
选择两个字符集之间的映射时采取的妥协
接近使用美国键盘的人会选择的内容。
生成的 ASCII 表示的质量各不相同。对于以下语言
西方血统应该是介于完美和优秀之间。在另一
手写音译(即,用罗马字母传达
由其他一些书写系统中的文本表达的发音)
像中文、日文或韩文这样的语言是一个非常复杂的问题
这个库甚至没有尝试解决这个问题。它画线在
上下文无关的逐字符映射。所以一个好的经验法则
是你音译的脚本来自拉丁语
字母表,音译就会越差。
请注意,该模块通常会比简单的模块产生更好的结果
从字符中去除重音符号(可以在Python中使用以下命令完成)
内置函数)。它基于手动调整的字符映射
例如还包含符号的 ASCII 近似值和
非拉丁字母。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)