繁体   English   中英

字符串化列表分为两个单独的列表

[英]stringified list to two separate lists

我有一个字符串列表,看起来像这样:

'[a:1,b:1,c:2,a:3]'

我想将其分为两个列表。

['a','b','c','d'][1,1,2,3]

是否有任何不使用eval的方式来执行此操作的Python方法(反正还是不起作用)?

您可以使用re.findall()查找字符和数字,并使用zip函数将它们分开:

>>> a='[a:1,b:1,c:2,a:3]'

>>> import re
>>> zip(*re.findall(r'([a-z]):(\d)',a))
[('a', 'b', 'c', 'a'), ('1', '1', '2', '3')]
import re
zip(*re.findall(r'([a-z]):([0-9])', my_string))

根据您的用途,您还可以添加一些+

>>> zip(*re.findall(r'([a-z]+):([0-9]+)', '[a:1,blabla:1,c:20,a:3]'))
[('a', 'blabla', 'c', 'a'), ('1', '1', '20', '3')]

为了更进一步了解整数列表,您需要:

str = '[a:1,b:1,c:2,a:3]'
p,q = zip(*[(x,int(y)) for x,y in re.findall('([a-z]+):(\d+)', str)])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM