如何在python3中从字符串创建列表?

2024-07-05 14:48:15 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我尝试将一个包含多个分隔符的字符串转换为一个列表,但由分隔符的位置决定:

例如:("Hooray! Finally, we're done.", "!,")根据给定的分隔符转换为:['Hooray', ' Finally', " we're done."]。你知道吗

如您所见,字符串根据分隔符被拆分为一个列表。我最近的尝试:

 for ch in separators:
    original = ' '.join(original.split(ch))
return(original.split())

当我这样做时,我得到的结果是:

['Hooray', 'Finally', "we're", 'done.']

但是我需要把" we're done"作为列表的一个元素,而不是分开。你知道吗

我得到了一个使用字符串累加器的建议,但我不认为它有助于解决这个问题

谢谢


Tags: 字符串inre列表forchwesplit
3条回答

可以将^{}与适当的表达式一起使用:

>>> data=("Hooray! Finally, we're done.", "!,")
>>> re.split("[%s]" % re.escape(data[1]), data[0])
['Hooray', ' Finally', " we're done."]

按元组第二个元素中的每个字符拆分元组的第一个元素。你知道吗

正则表达式由元组的第二个字符串组成,其中所有正则表达式特殊字符都被正确转义。[一些字符]意味着方括号内的每个字符都是分隔符。你知道吗

没有正则表达式的简单解决方案可以是:

def split_on_separators(word, separators):
    word_list = [word]
    auxList = []
    for sep in separators:
        for w in word_list:
            auxList.extend(w.split(sep))
        word_list = auxList
        auxList = list()
    return word_list

example = "Hooray! Finally, we're done."
separators = '!,'

split_on_separators(example, separators)

Out[49]: ['Hooray', ' Finally', " we're done."]

只需使用^{}执行以下操作:

>>> import re
>>> original = "Hooray! Finally, we're done."
>>> re.split('!|,', start)
['Hooray', ' Finally', " we're done."]

编辑: 如果没有正则表达式,则需要自定义函数,例如:

def multisplit(s, delims):
    pos = 0
    for i, c in enumerate(s):
        if c in delims:
            yield s[pos:i]
            pos = i + 1
    yield list(s[pos:])

然后这样使用:

>>> original = "Hooray! Finally, we're done."
>>> multisplit(original, '!,')
['Hooray', ' Finally', " we're done."] 

相关问题 更多 >