Python 删除非拉丁字符

标签 python string python-2.7 unicode

如何从字符串中删除所有非拉丁字符?更具体地说,有没有办法从 unicode 数据中找出非拉丁字符?

最佳答案

使用第三方 regex module ,您可以使用

删除所有非拉丁字符
import regex
result = regex.sub(ur'[^\p{Latin}]', u'', text)

如果您不想使用正则表达式模块,this page列出拉丁语 unicode block :

\p{InBasic_Latin}: U+0000–U+007F
\p{InLatin-1_Supplement}: U+0080–U+00FF
\p{InLatin_Extended-A}: U+0100–U+017F
\p{InLatin_Extended-B}: U+0180–U+024F
\p{InLatin_Extended_Additional}: U+1E00–U+1EFF 

所以你可以使用这些来使用 Python 的内置 re 模块来形成一个字符类:

import re
result = re.sub(ur'[^\x00-\x7F\x80-\xFF\u0100-\u017F\u0180-\u024F\u1E00-\u1EFF]', u'', text) 

演示:

In [24]: import re
In [25]: import regex

In [35]: text = u'aweerwq\u0645\u0631\u062d\u0628\u0627\u043c\u0438\u0440'

In [36]: print(text)
aweerwqمرحباмир

In [37]: regex.sub(ur'[^\p{Latin}]', u'', text)
Out[37]: u'aweerwq'

In [38]: re.sub(ur'[^\x00-\x7F\x80-\xFF\u0100-\u017F\u0180-\u024F\u1E00-\u1EFF]', u'', text)    
Out[38]: u'aweerwq'

关于Python 删除非拉丁字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23680976/

相关文章:

php - 将字符串的每个值转换为单独的数组

python - 在 python 中读取 csv 文件时语法无效

python - 对同一对象的不同状态进行相同的测试,而无需持久更改

python - 如何使用 Mock 库修补 Python 类

Python使用列表理解创建多维字典

python - 一起使用 django 和 scrapy

swift - 获取字符串到特定字符

C编程;将字符串添加到文件行的开头

javascript - 使用 re.findall 解析 javascript

python - 无法安装 pip : Permission denied error