我有一个长字符串对象,其格式如下
myString = “[name = john, family = candy, age = 72],[ name = jeff, family = Thomson, age = 24]”
Run Code Online (Sandbox Code Playgroud)
当然字符串比这长.我还有3个相关名单:
Names = []
Families = []
Ages = []
Run Code Online (Sandbox Code Playgroud)
我希望逐个字符地读取该字符串并获取数据并将其附加到适当的列表中.任何人都可以帮我解决如何将字符串分成变量的问题吗?我需要的是这样的事情:
Names = [“john”, “jeff”, ...]
Families = [“candy”, “Thomson”, ...]
Ages = [72, 24, ...]
Run Code Online (Sandbox Code Playgroud)
使用正则表达式可以很容易地完成此操作.基本上,构造一个正则表达式,从字符串中提取名称,族和年龄,并从tuple返回的s中提取相关数据以构建您的lists.
import re
if __name__=='__main__':
myString = "[name = john adams, family = candy, age = 72],[ name = jeff, family = Thomson, age = 24]"
answers=re.findall("\\[\\s*name = ([^,]+), family = (\\w+), age = (\\d+)\\]",myString)
names=[x[0] for x in answers]
families=[x[1] for x in answers]
ages=map(int,(x[2] for x in answers))
print "names: ",names
print "families: ", families
print "ages: ", ages
Run Code Online (Sandbox Code Playgroud)