说我有一个字符串列表,如:
list_str = ["Blah1", "Blah2", "Blah3", "Bad", "Yada1", "Yada2", "Yada3"]
如何遍历此列表,以便在遇到“Bad”时,我可以将“Bad”之前的所有字符串放入单独的字符串Blah
中,“Bad”之后的所有字符串都将在另一个名为Yada
基本上,当我打印Blah
时,我应该得到:
Blah1
Blah2
Blah3
每个blah必须用前一个换行符分隔。
答案 0 :(得分:3)
list_str_blah = list_str[:list_str.index("Bad")]
list_str_yadda = list_str[list_str.index("Bad")+1:]
可能是最简单的方法......虽然你总是可以只调用一次索引然后保存它
bad_idx = list_str.index("Bad")
答案 1 :(得分:3)
您可以使用itertools.takewhile
来设置此功能。
>>> import itertools
>>> list(itertools.takewhile(lambda i: i != "Bad", list_str))
['Blah1', 'Blah2', 'Blah3']
同时获取"Bad"
>>> iter_str = iter(list_str)
>>> front, back = list(itertools.takewhile(lambda i: i != "Bad", iter_str)), list(iter_str)
>>> front
['Blah1', 'Blah2', 'Blah3']
>>> back
['Yada1', 'Yada2', 'Yada3']
答案 2 :(得分:2)
不是说我实际上会建议这样编程,但是......
>>> SEP='---'
>>> [x.split(SEP) for x in SEP.join(list_str).partition(SEP + "Bad" + SEP)][0]
['Blah1', 'Blah2', 'Blah3']