我想使用正则表达式从字符串中提取Unicode字符,从字符串或文本文件中删除ASCII、数字和特殊符号,是否可以使用正则表达式。例如,我只想要从新闻文章中摘取的文本中的印地语或汉字。
发布于 2014-05-13 14:25:29
如前所述,ASCII是Unicode的一个子集,因此这个问题不太合理。如果您真的想从字符串中删除U+0080下面的所有代码点,这很容易:
re.sub(r"[\x00-\x7f]+", "", mystring)如果您只想保留某些“白色”字符,则需要精确地指定要保留的代码点。
例如,为了保持Devanagari代码点(用于编写印地语),可以使用
re.sub(r"[^\u0900-\u097F]+", "", mystring)或者(Python 2,谢谢你的提醒!)
re.sub(ur"[^\u0900-\u097F]+", "", mystring)您确实需要确保您正在处理Unicode字符串,所以不要忘记解码/编码您的输入字符串:
url = 'http://www.bhaskar.com/'
data = urllib2.urlopen(url).read().decode("utf-8-sig")
regex = re.compile(ur"[^\u0900-\u097F]+")
hindionly = regex.sub("foo", data)
print hindionly.encode("utf-8")发布于 2014-05-13 15:34:33
使用第三方regex模块,您可以使用unicode脚本来表示模式
import regex
print(repr(regex.sub(ur'[^\p{Devanagari}\p{Han}]', u'', u'abc123\u0900')))
# u'\u0900'https://stackoverflow.com/questions/23633796
复制相似问题