【问题标题】:Detecting non-ascii characters in unicode string [duplicate]检测unicode字符串中的非ascii字符[重复]
【发布时间】:2013-05-27 19:18:59
【问题描述】:

给定一个文本文件(或 unicode 字符串),什么是检测不属于 ascii 编码的字符的好方法?我可以轻松地迭代将每个字符传递给ord(),但我想知道是否有更有效、更优雅或更惯用的方式来做到这一点。

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

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

【问题讨论】:

标签: python unicode python-3.x


【解决方案1】:

这里的最终目标是编译数据中的字符列表 无法编码为 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'])

【讨论】:

    猜你喜欢
    • 2015-07-01
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2015-10-11
    • 1970-01-01
    相关资源
    最近更新 更多