这个字符串在一个字符串列表中,我想要按照 ?
字符进行分割。
例如,将 ['foo? bar\n', 'baz\n']
分割成 ['foo\n', 'bar\n', 'baz\n']
。
(我刚刚编辑了这个问题,以包含换行符。)
这是一种方式。
from itertools import chain
x = ['foo? bar', 'baz']
res = list(chain.from_iterable(i.strip().split('?') for i in x))
# ['foo', ' bar', 'baz']
如果使用像以下生成器这样的生成器,那么这就相当简单了:
def split_str_in_list(a_list, split_char):
for big_str in a_list:
for s in big_str.split(split_char):
yield s
print(list(split_str_in_list(['foo? bar', 'baz'], '? ')))
['foo', 'bar', 'baz']
看一个更明确的例子,可能更容易理解。
def split_text(input_list):
result = []
# iterate through every string from input_list
for item in input_list:
#split a string by '? '; splitted is a list with minimum 1 element(item) when item does not contain '? '
splitted = item.split('? ')
# iterate through this list and append every string at result list
for i in splitted:
result.append(i)
return result
input_list = ['foo? bar', 'baz']
print(split_text(input_list))
df=['foo? bar\n', 'baz\n']
new_list=[]
for i in df:
if '?' in i:
spli_data=i.split('?')
for sub_ in spli_data:
if '\n' not in sub_:
new_list.append(sub_+'\n')
else:
new_list.append(sub_)
else:
new_list.append(i)
输出:
['foo\n', ' bar\n', 'baz\n']
foo = ["foo ? bar", "baz"]; bar = [foo[0].split("?"), "baz"]
- Danielx = ['foo? bar', 'baz']; res = [j for i in x for j in i.split('?')]
- EmilioPeJustrip()
+\n
结尾实现的吗? - JL Peyret