【问题标题】:python split string json into multiple variables and create dataframespython将字符串json拆分为多个变量并创建数据框
【发布时间】:2020-11-21 07:52:56
【问题描述】:

下面是我在python3中的字符串

请假设下面的字符串处于循环中

在第一个循环中,我得到下面的字符串作为输入

string='{a:1,b:1}{a:2,b:2}{a:3,b:4}'

在第二个循环中,我得到以下字符串作为输入

string='{a:1,b:6}{a:2,b:6}'

在每个循环熊猫数据框应创建如下:

第一个循环

a b
1 1
2 2
3 4

第二个循环

a b
1 6
2 6

谁能帮忙解决这个问题我正在努力破解这个逻辑

【问题讨论】:

  • 您显示为输入字符串的内容不是有效的 JSON。
  • 我想知道为什么在第一个循环的末尾有a 6
  • 我在运动流@buran 中获取数据。最后附加了 SO 消息,我应该设法拆分这些
  • 如果您可以共享在迭代中生成这些字符串的数据框,那就太好了。
  • 嗨 Mayank,请检查下面的代码 sn-p tmp = str(my_json) i = tmp.rfind('a') # 最后出现的索引 a i = i-2 #jsons first_json = json.loads(tmp[2:i]) second_json = json.loads(tmp[i:-1]) 如果我有 2 个 json,这将起作用。但是在流媒体中,单发可能有 4 个 json 。这种拆分必须是动态的

标签: python pandas dataframe python-3.6 data-transform


【解决方案1】:

您可以将输入数据通过regex拆分,然后将输出解析为json对象

>>> import re
>>> string='{a:1,b:1}{a:2,b:2}{a:3,b:4}'
>>> r = '({a:\d+,b:\d+})'
>>> out = [item for item in re.split(r, string) if item !='']
>>> out
['{a:1,b:1}', '{a:2,b:2}', '{a:3,b:4}']

更新

使用这个正则表达式匹配任何字符:

r = '({a:.*?[^,],b:.*?[^}]})'

结果:

>>> import re
>>> string='{a:1ac,b:1_e}{a:2zz,b:222}{a:33,b:44}'
>>> r = '({a:.*?[^,],b:.*?[^}]})'
>>> out = [item for item in re.split(r, string) if item !='']
>>> out
['{a:1ac,b:1_e}', '{a:2zz,b:222}', '{a:33,b:44}']

【讨论】:

  • 谢谢 mtdot 如果我需要匹配任何字符而不是 \d+ 我应该给什么
猜你喜欢
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
相关资源
最近更新 更多