有人可以告诉我如何解决这个问题吗?在最后一个分隔符之后,代码停止并且没有到达原始字符串的末尾
def split_on_separators(original, separators):
""" (str, str) -> list of str
Return a list of non-empty, non-blank strings from original,
determined by splitting original on any of the separators.
separators is a string of single-character separators.
>>> split_on_separators("Hooray! Finally, we're done.", "!,")
['Hooray', ' Finally', " we're done."]
"""
result = []
newstring=''
for char in original:
if char in separators:
result.append(newstring)
newstring = ""
else:
newstring += char
return result
答案 0 :(得分:1)
import re
def split_on_separators(original, separators):
return re.split("[" + separators + "]", original)
好吧,这并不完美,因为某些字符不能出现在separators
中,因为它用于构建正则表达式,但它适用于许多情况,包括问题中的那个。一种更强大的方法是首先简单地使用re.split
而不是此函数。
答案 1 :(得分:0)
一旦循环完成/返回之前,您需要将newstring附加到结果。由于在最后一个字符串之后没有分隔符,否则它将永远不会被添加,因为只有遇到分隔符会导致列表附加。
答案 2 :(得分:0)
代码仅在输入分隔符时将输入字符串的一部分放在result
中。由于您的样本输入结尾没有分隔符,因此我们已经完成了#34; newstring
中的result
未附加到newstring
。要解决此问题,您可以在for之后添加if语句,以查看{{1}}中是否有某些内容,然后在必要时附加它。