如何拆分分隔符字符串并将其作为数组存储在python中?

时间:2015-11-30 05:21:24

标签: python arrays json

我的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))

但我不知道如何实现这个目标?

任何人都可以帮我吗?

2 个答案:

答案 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