我的json与此类似:
{"Details": {
"id": "1423",
"StudentName": "xxxx",
"Joineddate" : "yyy",
"Personalinfo" : yyyy,ZZZZ,(xxx|pppp),rrrr
}}
我想将其存储为与此类似的数组
[0] --> yyyy
[1] --> ZZZZ
[2]
[0] ---> xxx
[1] ---> pppp
[3] --> rrrr
当它只有一个分隔符,即逗号(,)时,我可以使用以下代码实现它:
List = input.split(",")
lst = []
for var in List:
lst.append(var)
l_dict = json.loads(json.dumps(lst))
但我不知道如何实现这个目标?
任何人都可以帮我吗?
答案 0 :(得分:3)
假设您只有一个级别的嵌套且模式完全匹配,则可以使用
lst = map(lambda x: x[1:-1].split('|') if x[0] == '(' and x[-1] == ')' else x, input.split(','))
它基本上将第一个split
数组作为输入,并通过split
再次查找括号和|
答案 1 :(得分:1)
虽然我的答案是针对此问题的输入123,456,(753,862),487
版本,但现在似乎有一个编辑并且正在恢复为原始版本。
这可能会让你得到一个你想要的结构
>>> map(lambda x : float(x) if "(" not in x else map(float,x.strip("()").split(",")) ,re.findall("(\d+\.\d+|\(\d+,\d+\)|\(\d+\.\d+,\d+\.\d+\)|\d+)","123.123,456,(753,862),(123.2,234.5),487"))
[123.123, 456.0, [753.0, 862.0], [123.2, 234.5], 487.0]
否则你可以简单地使用
import ast
lst=list(ast.literal_eval("123,456,(753,862),487"))
你会得到这样的结构。
[0] --> 123
[1] --> 456
[2]
[3] [0] ---> 753
[3] [1] ---> 862
[4] --> 487