def checkio(line):
list.remove(max("---"))
list.remove(min("--"))
return line
if __name__ == '__main__':
assert checkio('I---like--python') == "I-like-python", 'Example'
$我试图从字符串中删除“---”和“ - ”我喜欢python并且它似乎没有工作。有帮助吗?
答案 0 :(得分:3)
我认为你不想要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
不会修改字符串,但返回被替换的字符串,因此我们必须将其分配给变量(或者,在这种情况下,只返回它)。
答案 1 :(得分:1)
我会使用正则表达式:
>>> import re
>>> source = "String-----with-hyphens-nohypenshere--morehyphenshere-----------"
>>> string = re.sub(r'-+', '-', source)
>>> string
'String-with-hyphens-nohypenshere-morehyphenshere-'
以这种方式使用正则表达式,您可以识别并替换^^ O(n)时间。
答案 2 :(得分:0)
如果您只是尝试将每个---
替换为-
,并将每个--
替换为-
...这很容易直接转换为Python:
def checkio(line):
return line.replace('---', '-').replace('--', '-')
(如果你想修复用一个-
替换两个或多个-
字符的任何字符串,无论是2,3还是45,那么它是正则表达式的工作。但是,否则,你只是让问题变得更复杂。你不想只使用你不理解的“魔法代码” - 虽然在某些时候绝对值得学习正则表达式,你不必学习它们来解决这个问题。)