python - Python - 替换字符串中的所有单词,除了一些
问题描述
给定一个像
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ac massa arcu.
我想编写一个函数,用给定的字符串xxxx替换文本中的所有单词,除了一些在列表keep_list中定义的单词。因此,如果
keep_list = ['amet', 'ac']
我想要一个像这样的输出
xxxx xxxx xxxx xxxx amet, xxxx xxxx xxxx. xxxx ac xxxx xxxx.
我想保留原始字符串的所有逗号、点等,这是此功能的唯一困难。
你会如何优雅地做到这一点?
解决方案
一种方法是使用正则表达式来匹配单个单词,然后如果单词不在列表中,则传递回调re.sub()
以替换为。xxxx
import re
txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ac massa arcu.'
keep = ['amet', 'ac']
print(re.sub(r'\b\w+\b', lambda w: w.group() if w.group() in keep else 'xxxx', txt))
推荐阅读
- ios - VPIO AUAudioUnit 的 3A 处理不会在 iOS 14 设备上的 RemoteIO 模式下停止
- java - 自定义分叉连接池正在与 java 程序中的公共池一起使用
- mysql - Laravel 7 App 无法上传到 Heroku 云服务
- asp.net - url中带有“json”字符串的属性路由
- javascript - 在需要和运行目录时收到 forEach 错误?
- azure-functions - 逻辑应用 JSON 组合将 JSON 值转换为字符串
- android - recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
- node.js - Oauth 2 返回无效客户端
- snowflake-cloud-data-platform - 安装 Snowsql 后,我无法初始化日志。未启用日志记录:[Errno 13] 权限被拒绝:'C:\\Users\\snowsql_rt.log'
- c - 我遇到了像“char var:3”这样的语句。这个 C 语句有什么作用?