检测Unicode字符串中的非ASCII字符

3
给定一个文本文件(或Unicode字符串),有什么好的方法来检测超出ASCII编码范围的字符?我可以轻松地迭代每个字符到ord(),但是我想知道是否有更有效、更优雅或者更惯用的方法。
最终目标是编译数据中无法编码为ASCII的字符列表。
如果有影响的话,我的语料库大小大约为500MB / 1200个文本文件。在Win7(64位)上运行(预编译的普通)Python 3.3.1。

请查看 str.translate - Fredrik Pihl
1个回答

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'])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接