如何使用分隔符将一个字符串分成两个字符串

3

这个字符串在一个字符串列表中,我想要按照 ? 字符进行分割。

例如,将 ['foo? bar\n', 'baz\n'] 分割成 ['foo\n', 'bar\n', 'baz\n']

(我刚刚编辑了这个问题,以包含换行符。)


foo = ["foo ? bar", "baz"]; bar = [foo[0].split("?"), "baz"] - Daniel
列表推导式方式: x = ['foo? bar', 'baz']; res = [j for i in x for j in i.split('?')] - EmilioPeJu
你能更具体地说明换行符和空格的要求吗?第一项有一个前导空格被剥离并添加了一个换行符?每个分割结果是通过 strip() + \n 结尾实现的吗? - JL Peyret
4个回答

3

这是一种方式。

from itertools import chain

x = ['foo? bar', 'baz']

res = list(chain.from_iterable(i.strip().split('?') for i in x))

# ['foo', ' bar', 'baz']

2

如果使用像以下生成器这样的生成器,那么这就相当简单了:

代码:

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']

1

看一个更明确的例子,可能更容易理解。

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))

0
你可以尝试这种方法:
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']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接