检测unicode字符串中的非ascii字符

时间:2013-05-31 21:27:12

标签: python unicode python-3.x

给定一个文本文件(或unicode字符串),检测不在ascii编码之外的字符的好方法是什么?我可以很容易地迭代将每个字符传递给ord(),但我想知道是否有一种更有效,更优雅或惯用的方法来实现它。

这里的最终目标是编译无法编码为ascii的数据中的字符列表。

如果重要,我的语料库大小约为500MB / 1200文本文件。在Win7(64位)上运行(预编译的vanilla)Python 3.3.1。

1 个答案:

答案 0 :(得分:9)

  

这里的最终目标是编译数据中的字符列表   无法编码为ascii。

我能想到的最有效的方法是使用re.sub()删除任何有效的ASCII字符,这些字符应该包含一个包含所有非ASCII字符的字符串。

这只会删除可打印的字符......

>>> import re
>>> print re.sub('[ -~]', '', u'£100 is worth more than €100')
£€

...或者如果您想要包含不可打印的字符,请使用此...

>>> print re.sub('[\x00-\x7f]', '', u'£100 is worth more than €100')
£€

要消除欺骗,只需创建返回字符串的set() ...

>>> print set(re.sub('[\x00-\x7f]', '', u'£€£€'))
set([u'\xa3', u'\u20ac'])