Python 创建了一个拆分函数,但它';It’没有按预期工作
作为一个实践问题,我创建了一个split函数,它的作用与Python 创建了一个拆分函数,但它';It’没有按预期工作,python,python-3.x,Python,Python 3.x,作为一个实践问题,我创建了一个split函数,它的作用与str.split()基本相同。然而,对于我的第一个测试值,似乎最后一个单词被忽略了,没有被添加到列表中。我理解这是因为没有要比较的“end”字符,所以它跳过了if语句,而没有添加单词 我想知道是否有人可以看一下并帮助改进代码,这样就可以在if语句之外添加这个词,这样它就不会忽略结束词 def split(string): words = [] char_to_split = [' ', '\n', '\t'] wo
str.split()
基本相同。然而,对于我的第一个测试值,似乎最后一个单词被忽略了,没有被添加到列表中。我理解这是因为没有要比较的“end”字符,所以它跳过了if语句,而没有添加单词
我想知道是否有人可以看一下并帮助改进代码,这样就可以在if语句之外添加这个词,这样它就不会忽略结束词
def split(string):
words = []
char_to_split = [' ', '\n', '\t']
word = ""
for ch in string:
if ch in char_to_split:
if word != "":
words.append(word)
word = ""
else:
word += ch
if len(words) != 0:
return words
else:
return None
if __name__ == "__main__":
print(split('duff_beer 4.00'))
print(split('a b c\n'))
print(split('\tx y \n z '))
print(split(''))
我想加一句话:
if word not in words:
words.append(word)
在我返回列表之前。但是,问题是如果我有一个重复同一单词的字符串。你的问题是,如果字符串末尾没有拆分的字符,那么单词中已有的内容就不会添加到单词中 如果单词不是空的,则在末尾追加单词 Edit:kindall指出它对只有一个单词的字符串不起作用,所以我将条件移到了
if len(words)!=0
def split(string):
words = []
char_to_split = [' ', '\n', '\t']
word = ""
for ch in string:
if ch in char_to_split:
if word != "":
words.append(word)
word = ""
else:
word += ch
if word: words.append(word) # add this
if len(words) != 0:
return words
else:
return None
print(split('duff_beer 4.00'))
>>> ['duff_beer', '4.00']
编辑感谢@k我更愿意只做
拆分
,不带任何参数,因为默认值为无
,这样就可以在'
,'\n'
和'\t'
上拆分了:
s='hello blah\t\nBlahFooBar'
print(s.split())
输出:
['hello', 'blah', 'BlahFooBar']
这就更重要了,比如(
“
,`'\n')等等。很乐意帮助:)如果只有一个单词,那就不起作用了,因为len(words)
在那一点上是0。谢谢你指出这一点。我没有想到那个特殊的情景。