Python - 字符串转换成列表

3

我有一个字符串字段:"[巴黎,马赛,荷兰]"。我希望将此字符串转换为字符串列表。

目前我有以下函数:

def stringToList(string):
    string = string[1:len(string)-1]
    try:
        if len(string) != 0: 
            tempList = string.split(", ")
            newList = list(map(lambda x: str(x), tempList))
        else:
            newList = []
    except:
        newList = [-9999]

    return(newList)

我想知道是否有一个更简单或更短的方法,可以得到相同的结果。 如果我的输入数据是int类型的,我可以使用ast.literal_eval()。但在我的情况下,它不起作用。
谢谢
4个回答

4

值得了解的:

import re

string = "[Paris, Marseille, Pays-Bas]"
founds = re.findall('[\-A-Za-z]+', string)

它将查找所有包含至少一个-A-Za-z的内容。

其中一个优点是它可以处理较不整洁的字符串,例如:

string2 = " [  Paris, Marseille  , Pays-Bas  ] "
string3 = "   [ Paris  ,  Marseille  ,   Pays-Bas  ] "

这是我最喜欢的选项,但OP必须确保逗号之间可能出现的内容。例如,就像现在这个答案所示的"[Paris1, M4rseill3]"将不起作用。因此,将\d添加到混合物中可能不是一个坏主意。 - Ma0
@Ev.Kounis 没错。此外,我个人认为逐字符处理是这种解析问题最合适的方法,这正是 re 内部所做的。去除左右两侧、分割和有条件地选择元素可以在代码层面上简单地完成,但在内部却有些痛苦... 我想... - ghchoi

3
这将字符串拆分为一个列表:
'[Paris, Marseille, Pays-Bas]'.strip('[]').split(', ')                                                                                                                               
# ['Paris', 'Marseille', 'Pays-Bas']

1
这不就是我做的吗? - U13-Forward
是的,看起来我们两个差不多同时完成了。 - oppressionslayer

2

只需使用切片和 str.split

>>> s = '[Paris, Marseille, Pays-Bas]'
>>> s[1:-1].split(', ')
['Paris', 'Marseille', 'Pays-Bas']
>>> 

或者使用 str.stripstr.split 函数:
>>> s = '[Paris, Marseille, Pays-Bas]'
>>> s.strip('[]').split(', ')
['Paris', 'Marseille', 'Pays-Bas']
>>> 

0

试试这个:

s = "[Paris, Marseille, Pays-Bas]"

s = [i.replace('[','').replace(']','').replace(' ','') for i in 
s.split(',')]
print(s)

输出:

['Paris', 'Marseille', 'Pays-Bas']

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