2013-05-31 51 views
4

给定一个文本文件(或unicode字符串),有什么方法可以检测字符是否在ascii编码之外?我可以很容易地迭代每个字符到ord(),但我想知道是否有更高效,优雅或惯用的方法来做到这一点。检测unicode字符串中的非ASCII字符

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

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

+0

看看[str.translate](http://docs.python .ORG /库/ stdtypes.html#str.translate) –

回答

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