将字符串变成‘我要学Python编程’
图文章节中
res = re.sub(r'\W+', '', s)是把 所有非字符数字下划线的 字符串替换成 空值
为什么中文保留下来了呢
原始代码
import re s = "我我...我我...我要..要要...要要...学学学...学学..Python...编编编..编程..程.程...程...程" res = re.sub(r'\W+', '', s) ret = re.sub(r'(.)\1+', r'\1', res) print(ret) # 运行结果: # 我要学Python编程
\1指的是前面 . 捕获的字符
那么(.)的括号是将 . 包裹起来而非组的概念。
这样r'(.)\1'前面的r作用就是避免转义
这么理解的话ret = re.sub(r'(.)\1+', r'\1', res)改成ret = re.sub(r'(\w)\1+', r'\1', res)
执行结果就不正确了才对,而实际执行结果却是正确的
修改代码:
import re s = "我我...我我...我要..要要...要要...学学学...学学..Python...编编编..编程..程.程...程...程" res = re.sub(r'\W+', '', s) print(res) ret = re.sub(r'(\w)\1+', r'\1', res) print(ret) # 运行结果: # 我要学Python编程
13
收起
正在回答
1回答
同学,你好!\W是非字母数字及下划线,可以将字符串中的点匹配出来,用re.sub将匹配出的点替换成空字符串,原来的汉字是不变的
.是任意字符指s变量中任意字符,()是组的意思,\1+表示重复匹配正则中第一个圆括号内匹配到的内容,然后将\1匹配的内容进行原变量替换
祝学习愉快~
Python全能工程师
- 参与学习 人
- 提交作业 16233 份
- 解答问题 4470 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星