【Python】正则表达式——只保留中文/汉字字符(过滤非汉字字符)

【用一个例子引入】

#去除特殊字符,只保留汉子,字母、数字
import re
s = "今天下雨了123!@#%@……¥@¥,不开心"
#去除不可见字符
str=re.sub('[^\u4e00-\u9fa5]+','',s)
print(str)

【应用】

docs=[]
for f in filepaths:
    try:
        data=open(f, encoding='utf-8').read()
        docs.append(re.sub('[^\u4e00-\u9fa5]+', '', data))
    except Exception :
        print(f)

核心部分:

re.sub('[^\u4e00-\u9fa5]+', '', data)
#其中data就是要进行过滤的字符串/文本内容
#作用是只保留汉字内容,其他字符全部过滤
### 如何使用正则表达式匹配处理中文字符串 #### 使用 Python 处理中文字符正则表达式Python 中,可以利用 `re` 模块来进行复杂的模式匹配操作。为了能够正确识别并处理 Unicode 字符集下的汉字,通常会采用 `\u4e00-\u9fff` 这样的范围来定义中文字符。 下面是一个简单的例子展示如何通过正则表达式去查找给定文本里的所有中文单词: ```python import re text = "你好 world! 今天天气真好。" pattern = r'[\u4e00-\u9fff]+' result = re.findall(pattern, text) print(result) # 输出: ['你好', '今天天气真好'] ``` 这段代码首先导入了必要的模块,接着定义了一个包含混合语言文字的字符串变量 `text` 和一个用来捕捉连续多个中文字符组成的词语作为目标对象的正则表达式模板 `pattern`[^3]。最后调用了 `findall()` 方法执行整个输入串上的搜索工作并将符合条件的结果收集起来返回列表形式供后续分析或显示之用。 对于更复杂的需求比如验证电子邮件地址是否含有法的中文符号或者是过滤掉纯英文之外的内容都可以基于上述方法进一步扩展实现逻辑功能。 #### C 语言环境下处理中文字符的方法 虽然标准C库并不直接支持Unicode编码以及相应的高级文本处理特性,但是可以通过第三方库如 ICU(International Components for Unicode) 来增强这方面的能力。ICU 提供了一套全面而丰富的 API 接口使得开发者可以在应用程序里轻松完成多国语言环境的支持任务,其中包括但不限于正则表达式的解析与应用等功能[^1]。 当涉及到具体项目开发时,则建议优先考虑选用那些已经内置良好国际化特性的现代编程平台或者框架;如果确实受限于某些因素不得不依赖原生C的话,那么除了引入额外的帮助类库外还可以尝试借助POSIX兼容系统的 locale 设置机制间接达到目的——即先切换当前进程的工作区域至合适的东亚地区设置然后再按照既有的ASCII码表以外的方式编写对应的规则语句即可满足基本需求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值