def checkio(line):
list.remove(max("---"))
list.remove(min("--"))
return line
if __name__ == '__main__':
assert checkio('I---like--python') == "I-like-python", 'Example'
$ 我正在尝试从我喜欢 python 的字符串中删除“---”和“--”,它似乎正在工作。有什么帮助吗?
我想你不想list.remove()
在这里。这从列表中删除了一个项目。事实上,你根本没有清单。
max()
可以使用,但它所做的只是返回一个破折号。
看起来像正则表达式的工作:
import re
def checkio(line):
reutrn re.sub(r'(-)+', r'\1', line)
测试时:
>>> checkio('I---like--python') == "I-like-python"
True
请记住,在 python 中,字符串是不可变list.remove
的,因此如果修改了字符串,您的代码将不起作用。re.sub
不会就地修改字符串,而是返回被替换的字符串,所以我们必须将它分配给一个变量(或者,在这种情况下,只是返回它)。
I would use regular expressions for that:
>>> import re
>>> source = "String-----with-hyphens-nohypenshere--morehyphenshere-----------"
>>> string = re.sub(r'-+', '-', source)
>>> string
'String-with-hyphens-nohypenshere-morehyphenshere-'
Using regex in this way you can identify and replace with ^^ O(n) time.
如果您只是想用 替换 each ---
,-
并将 each 替换--
为-
... ,那么直接翻译成 Python 很容易:
def checkio(line):
return line.replace('---', '-').replace('--', '-')
(如果你想用单个替换任何两个或多个字符的字符串,无论是 2、3 还是 45,那么它就是正则表达式的工作。但否则,你只会让问题变得更复杂。你不要只想使用你不理解的“魔法代码”——虽然在某些时候学习正则表达式绝对值得,但你不必学习它们来解决这个问题。)-
-