我在python代码中有这个字符串:
String = "{a,b,c}{d,e,f}{g,h,i}"
我想把这个字符串转换成一个像这样的列表:
list =[{a,b,c},{d,e,f},{g,h,i}]
删除前后大括号,然后使用'}{'作为分隔符将字符串分成几组。使用','作为分隔符,将每一组进一步分开,形成一个集合。
String = "{a,b,c}{d,e,f}{g,h,i}"
result = [set(g.split(",")) for g in String[1:-1].split("}{")]
print(result)
[{'c', 'a', 'b'}, {'e', 'd', 'f'}, {'g', 'h', 'i'}]
注意,为了保持组内元素的顺序,不能转换为集合。直接使用分割的结果:
result = [g.split(",") for g in String[1:-1].split("}{")]
print(result)
[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]
我还假设您打算在您的预期输出
中的字母周围加上引号,否则无效。首先允许我修复您的列表,它似乎是二维列表,并将每个字符用单引号括起来:
>>> string = "[['a','b','c'],['d','e','f'],['g','h','i']]"
>>> import ast
>>> list = ast.literal_eval(string)
>>> type(list)
<type 'list'>
>>> list[0][1]
'b'
这里我使用ast的literal_eval
,而您可以使用eval
获得相同的结果,然而,eval是危险的,特别是如果您不相信用户的输入。