Last element in python list, created by splitting a string is empty
所以我有一个字符串需要解析。字符串包含多个单词,由连字符分隔(
例如
现在,如果我想自己看单词,我将字符串拆分成一个列表。
1 2 3 4 5 | wordstring ="one-two-three-" wordlist = wordstring.split('-') for i in range(0, len(wordlist)): print(wordlist[i]) |
产量
1 2 3 4 | one two three #empty element |
我不明白的是,为什么在结果列表中,最后一个元素是一个空字符串。如何省略这个空元素?
我应该简单地截断列表还是有更好的方法来拆分字符串?
您有一个空字符串,因为最后一个
1 | wordlist = wordstring.strip('-').split('-') |
可以使用regex执行此操作:
1 2 | import re wordlist = re.findall("[a-zA-Z]+(?=-)", wordstring) |
输出:
1 | ['one', 'two', 'three'] |
如果最后一个元素总是一个
然后,像你做的那样,继续到
1 2 3 | wordlist = wordstring[:-1].split('-') print(wordlist) ['one', 'two', 'three'] |
首先是strip(),然后是split()。
1 2 3 4 5 6 | wordstring ="one-two-three-" x = wordstring.strip('-') y = x.split('-') for word in y: print word |
仅针对不同的选项:
1 | wordlist = [x for x in wordstring.split('-') if x] |
请注意,上面还处理一些情况,例如:
这在文档中有解释:
...
If sep is given, consecutive delimiters are not grouped together and are deemed to delimit empty strings (for example,'1,,2'.split(',') returns['1', '', '2'] ).
...
如果你知道你的字符串总是以
如果需要更复杂的内容,您可能需要了解正则表达式。
我相信
在拆分前,您是否愿意删除
1 2 3 4 5 | wordstring ="one-two-three-" wordlist = wordstring[:-1].split('-') print wordlist OUT: 'one-two-three' |
在拆分字符串之前,应该使用python的strip内置函数。例如:
1 2 | wordstring ="one-two-three-" wordlist = wordstring.strip('-').split('-') |
在分裂前剥去/修剪绳子。这样,您就可以删除尾随的"",并且应该很好。