我正在处理一些字符串,并且正在使用replace()
从其中删除一些字符,例如:
a = 'monsterr'
new_a = a.replace("rr", "r")
new_a
但是,假设现在我收到以下字符串:
在:
a = 'difference'
new_a = a.replace("rr", "r")
new_a
出局:
'difference'
如果我的字符串不包含rr
,如何不返回任何内容?无论如何,只是通过还是什么都不返回?我试图:
def check(a_str):
if 'rr' in a_str:
a_str = a_str.replace("rr", "r")
return a_str
else:
pass
但是,它不起作用。对于monster
,预期的输出将为空。
答案 0 :(得分:2)
使用return
:
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]
答案 1 :(得分:2)
就像一个小小的复活节彩蛋一样,我想我也会把这个小宝石也作为一个选项,只要是因为您的问题:
如果我的字符串不包含rr,如何不返回任何内容?反正只是通过还是什么都不返回?
使用布尔运算符,您可以将if
行完全从check()
中删除。
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
是否考虑使用此un-pythonic
,这是另一种选择。另外,这与他的问题类似。
“如果字符串不包含rr,则不返回任何内容”
对于那些不知道它如何工作或为什么起作用的人,(和/或喜欢学习很酷的python技巧,但不知道这一点),那么这里是docs页,介绍了布尔值运算符。
PS
从技术上讲,它是un-pythonic
,因为它是ternary
运算。这确实与“ Python禅宗”〜import this
背道而驰,但我喜欢C
风格的语言。