正则表达式,用于删除文本中所有字符(允许的字符除外)

时间:2018-08-08 12:04:57

标签: python regex string

我想编写一个Python函数,该函数输入文本并将VALID_CHARS中未指定的每个字符替换为空格''。使用正则表达式可以做到吗?

正则表达式解决方案应与以下Python代码相同:

def clean_text(text):
    text_valid = ''
    for char in text:
        if char in VALID_CHARS:
            text_valid += char
        else:
            text_valid += ' '
    return text_valid

3 个答案:

答案 0 :(得分:1)

您应该查看可能对您有帮助的库re

我认为这应该有效:text_valid = re.sub(re.compile('[^'+re.escape(VALID_CHARS)+']'), r'', text)

答案 1 :(得分:1)

您可以即时基于VALID_CHARS创建一个正则表达式,然后使用re.sub

import re

def clean_text(text):
    regex = '[^' + re.escape(VALID_CHARS) + ']'
    return re.sub(regex, ' ', text)

re.escape确保诸如]之类的字符不会破坏正则表达式。

答案 2 :(得分:1)

您可以尝试这样的事情

re.sub(r'[^{}]'.format(re.escape(VALID_CHARS)), '', text)