Python 使用正则表达式从字符串中删除字符

Python 使用正则表达式从字符串中删除字符,python,python-3.x,Python,Python 3.x,im reading一书中有一个实践问题,它要求您创建一个函数,该函数默认从字符串中删除空白,如果您给它一个字符作为参数,它将从字符串中删除该字符(基本上是重新创建strip方法)。我写了一些我认为应该有用的东西,它可以删除空白,但不会删除我输入的字符参数,它只是不打印到控制台 import re def re_move(text,chars=0): string_regexx = re.compile(r"\S+") chars_regexx = re.compile(r"

im reading一书中有一个实践问题,它要求您创建一个函数,该函数默认从字符串中删除空白,如果您给它一个字符作为参数,它将从字符串中删除该字符(基本上是重新创建strip方法)。我写了一些我认为应该有用的东西,它可以删除空白,但不会删除我输入的字符参数,它只是不打印到控制台

import re 

def re_move(text,chars=0):
    string_regexx = re.compile(r"\S+")
    chars_regexx = re.compile(r"^chars") 

    if chars == 0:
        f1 = string_regexx.findall(text)
        return "".join(f1)


    elif chars != 0:
        e1 = chars_regexx.findall(text)
        return " ".join(e1)

#should remove white space
print(re_move("tokyo is in japan"))

#should remove all e values
print(re_move("hello there","e"))

没有错误,但是预期的带有删除的e值的字符串没有输出到控制台上,我不知道为什么?

从字符串中删除空白的最简单方法是,
text

text = re.sub(r'\s+', '', text)
同样,要删除字符“a”和“b”,例如:

text = re.sub('[ab]+', '', text)
要测试可选参数
chars
,通常需要指定默认值
None

import re

def re_move(text, chars=None):
    text = re.sub(r'\s+', '', text)
    if chars:
        text = re.sub(f'[{chars}]+', '', text)
    return text

print(re_move('abc def ghi ', chars='beh'))
印刷品:

acdfgi

chars\u regexx=re.compile(r“^chars”)
将尝试匹配字符串开头的字符
chars
。这不可能是你想要的。您想要匹配
f'[chars]+
。请看下面我的答案。非常感谢,现在它更有意义了:)