首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用正则表达式只从字符串中提取Unicode字符

使用正则表达式只从字符串中提取Unicode字符
EN

Stack Overflow用户
提问于 2014-05-13 14:17:02
回答 2查看 3K关注 0票数 1

我想使用正则表达式从字符串中提取Unicode字符,从字符串或文本文件中删除ASCII、数字和特殊符号,是否可以使用正则表达式。例如,我只想要从新闻文章中摘取的文本中的印地语或汉字。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-13 14:25:29

如前所述,ASCII是Unicode的一个子集,因此这个问题不太合理。如果您真的想从字符串中删除U+0080下面的所有代码点,这很容易:

代码语言:javascript
复制
re.sub(r"[\x00-\x7f]+", "", mystring)

如果您只想保留某些“白色”字符,则需要精确地指定要保留的代码点。

例如,为了保持Devanagari代码点(用于编写印地语),可以使用

代码语言:javascript
复制
re.sub(r"[^\u0900-\u097F]+", "", mystring)

或者(Python 2,谢谢你的提醒!)

代码语言:javascript
复制
re.sub(ur"[^\u0900-\u097F]+", "", mystring)

您确实需要确保您正在处理Unicode字符串,所以不要忘记解码/编码您的输入字符串:

代码语言:javascript
复制
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")
票数 4
EN

Stack Overflow用户

发布于 2014-05-13 15:34:33

使用第三方regex模块,您可以使用unicode脚本来表示模式

代码语言:javascript
复制
import regex
print(repr(regex.sub(ur'[^\p{Devanagari}\p{Han}]', u'', u'abc123\u0900'))) 
# u'\u0900'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23633796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档