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