首页 > 解决方案 > 正则表达式将字符映射到该字符的函数

问题描述

我想要一个使用正则表达式的函数,它将某些标点符号(这些:、、、、、、、)映射到该.字符,的函数。具体来说,它将在两侧放置一个空间。();:

例如,它会映射字符串“你好,这是一个测试字符串”。到“你好,这是一个测试字符串。”这就是我现在所拥有的:

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

这按预期工作,但非常笨重/难以阅读。如果我有办法将每个标点符号映射到单个正则表达式行中该字符的函数,它将显着改善它。有没有办法用正则表达式做到这一点?对不起,如果它很明显,我对正则表达式很陌生,不知道这种东西会被称为什么。

标签: pythonregex

解决方案


您可以尝试以下方法:

import re

recmp = re.compile(r'[.,:;()]')

def add_spaces_to_punctuation(input_text):
    text = recmp.sub(r' \1 ', input_text)

    return text

此外,考虑到性能并根据这个答案,如果您需要经常运行它应该会更快。


推荐阅读