Python 如何在使用replace()字符串方法时不执行任何操作?

Python 如何在使用replace()字符串方法时不执行任何操作?,python,string,python-3.x,Python,String,Python 3.x,我正在处理一些字符串,并使用replace()从中删除一些字符,例如: a = 'monsterr' new_a = a.replace("rr", "r") new_a 但是,假设现在我收到以下字符串: 在: 输出: 如果我的字符串不包含rr,我怎么能不返回任何内容?不管怎样,是否只有通过或不返回任何内容?我试图: def check(a_str): if 'rr' in a_str: a_str = a_str.replace("rr", "r")

我正在处理一些字符串,并使用
replace()
从中删除一些字符,例如:

a = 'monsterr'
new_a = a.replace("rr", "r")
new_a
但是,假设现在我收到以下字符串:

在:

输出:

如果我的字符串不包含
rr
,我怎么能不返回任何内容?不管怎样,是否只有通过或不返回任何内容?我试图:

def check(a_str):
    if 'rr' in a_str:
        a_str = a_str.replace("rr", "r")
        return a_str
    else:
        pass

但是,它不起作用。怪物的预期输出将是空的。

使用
返回

def check(a_str):
    if 'rr' in a_str:
        a_str = a_str.replace("rr", "r")
        return a_str
对于列表理解:

a = ["difference", "hinderr"]
x = [i.replace("rr", "r") for i in a]

使用
返回

def check(a_str):
    if 'rr' in a_str:
        a_str = a_str.replace("rr", "r")
        return a_str
对于列表理解:

a = ["difference", "hinderr"]
x = [i.replace("rr", "r") for i in a]
就像一个小小的复活节彩蛋,我想我也应该把这个小小的宝石作为一个选择,如果只是因为你的问题:

如果我的字符串不包含rr,我怎么能不返回任何内容?不管怎样,是否只有通过或不返回任何内容

使用布尔运算符,可以将
if
行完全从
check()中取出

考虑一下这个
非pythonic
,这是另一种选择。另外,这也是他的问题所在

“如果字符串不包含rr,则返回none”

对于那些不知道这是如何工作或为什么工作的人,(和/或喜欢学习很酷的python技巧但不知道这一点),下面是解释布尔运算符的页面

p.S.

从技术上讲,它是
非pythonic
,因为它是
三元操作。这确实与“Python禅宗”背道而驰,但来自
C
风格的语言,我喜欢它们。

就像一个小复活节彩蛋一样,我想我也应该把这个小宝石作为一个选项,如果只是因为你的问题:

如果我的字符串不包含rr,我怎么能不返回任何内容?不管怎样,是否只有通过或不返回任何内容

使用布尔运算符,可以将
if
行完全从
check()中取出

考虑一下这个
非pythonic
,这是另一种选择。另外,这也是他的问题所在

“如果字符串不包含rr,则返回none”

对于那些不知道这是如何工作或为什么工作的人,(和/或喜欢学习很酷的python技巧但不知道这一点),下面是解释布尔运算符的页面

p.S.



从技术上讲,它是
非pythonic
,因为它是
三元操作。这确实与“Python禅宗”背道而驰,但来自
C
风格的语言,我喜欢它们。

你说什么都没有是什么意思
None
,空字符串
'
?同一个字符串未修改?您能否更明确地说明“它不起作用”为什么要
返回a_str_5
?什么是
a_str_5
?@对不起,我修好了,什么都没有是什么意思
None
,空字符串
'
?同一个字符串未修改?您能否更明确地说明“它不起作用”为什么要
返回a_str_5
?什么是
a_str_5
?@slider抱歉,我已修复了它。您实际上不需要
其他:如果您只想返回
None
,请返回
。除了原始代码中的
pass
之外,还应该返回
None
。如果他们想在条件未满足时返回
None
,那么
else
子句不是不必要的吗?有没有办法作为理解列表执行此操作?@滑块绝对正确。我还悄悄地修复了错误的变量名。代码的工作方式取决于OP@J.Doe我为列表理解添加了一个示例,如果您只想返回
None
,那么您实际上不需要
else:return
。除了原始代码中的
pass
之外,还应该返回
None
。如果他们想在条件未满足时返回
None
,那么
else
子句不是不必要的吗?有没有办法作为理解列表执行此操作?@滑块绝对正确。我还悄悄地修复了错误的变量名。代码的工作方式取决于OP@J.Doe我添加了一个列表理解示例
def check(text, dont_want='rr', want='r'):
    replacement = text.replace(dont_want, want)

    return replacement != text and replacement or None
    #checks if there was a change after replacing,
    #if True:    returns replacement
    #if False:   returns None

test = "differrence"
check(test)
#difference

test = "difference"
check(test)
#None