python - 正则表达式将字符映射到该字符的函数
问题描述
我想要一个使用正则表达式的函数,它将某些标点符号(这些:、、、、、、、)映射到该.
字符,
的函数。具体来说,它将在两侧放置一个空间。(
)
;
:
例如,它会映射字符串“你好,这是一个测试字符串”。到“你好,这是一个测试字符串。”这就是我现在所拥有的:
import re
def add_spaces_to_punctuation(input_text)
text = re.sub('[.]', ' . ', input_text)
text = re.sub('[,]', ' , ', text)
text = re.sub('[:]', ' : ', text)
text = re.sub('[;]', ' ; ', text)
text = re.sub('[(]', ' ( ', text)
text = re.sub('[)]', ' ) ', text)
return text
这按预期工作,但非常笨重/难以阅读。如果我有办法将每个标点符号映射到单个正则表达式行中该字符的函数,它将显着改善它。有没有办法用正则表达式做到这一点?对不起,如果它很明显,我对正则表达式很陌生,不知道这种东西会被称为什么。
解决方案
您可以尝试以下方法:
import re
recmp = re.compile(r'[.,:;()]')
def add_spaces_to_punctuation(input_text):
text = recmp.sub(r' \1 ', input_text)
return text
此外,考虑到性能并根据这个答案,如果您需要经常运行它应该会更快。
推荐阅读
- c# - 如何使用公共 void 方法但私有成员测试代码?
- powerbi - powerBI 中的分组条形图
- python - 如何在测试服务器时模拟来自集成服务的响应
- java - JAXB 注释问题
- html - CSS 类优先级以及为什么我必须使用 !important 覆盖?
- javascript - 如何构建 JS 应用程序,将所有资产合并到单个文件组件中但不包装到 webpack 模块中
- junit - 为什么 org.apache.commons.lang.StringUtils.isBlank() 为空值和空值返回 false
- python - H5Py 和存储
- php - 强密码验证 laravel
- javascript - 表单字段中的日期输入未提交