Skip to main content
 首页 » 编程设计

python之使用正则表达式从字符串中仅提取 Unicode 字符

2025年05月04日23jackei

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

请您参考如下方法:

如上所述,ASCII 是 Unicode 的一个子集,因此这个问题按原样没有意义。如果你真的想从字符串中删除 U+0080 以下的所有代码点,那很容易:

re.sub(r"[\x00-\x7f]+", "", mystring) 

如果您只想保留某些“列入白名单”的字符,则需要准确指定要保留的代码点。

例如,要保留 Devanagari 代码点(用于编写印地语),您可以使用

re.sub(r"[^\u0900-\u097F]+", "", mystring) 

或(Python 2,感谢@bobince 的提示!)

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")