Yu-*_*hen 6 python json pandas
这是第一次使用stackoverflow来提问.我的英语很差,所以如果我不经意地用言语表达你的意思,请不要介意.
我有一个json文件(access.json),格式如下:
[
{u'IP': u'aaaa1', u'Domain': u'bbbb1', u'Time': u'cccc1', ..... },
{u'IP': u'aaaa2', u'Domain': u'bbbb2', u'Time': u'cccc2', ..... },
{u'IP': u'aaaa3', u'Domain': u'bbbb3', u'Time': u'cccc3', ..... },
{u'IP': u'aaaa4', u'Domain': u'bbbb4', u'Time': u'cccc4', ..... },
{ ....... },
{ ....... }
]
Run Code Online (Sandbox Code Playgroud)
我用的时候:
ipython
import pasdas as pd
data = pd.read_json('./access.json')
Run Code Online (Sandbox Code Playgroud)
它返回:
ValueError: Expected object or value
Run Code Online (Sandbox Code Playgroud)
这就是我想要的结果:
[out]
IP Domain Time ...
0 aaaa1 bbbb1 cccc1 ...
1 aaaa2 bbbb2 cccc2 ...
2 aaaa3 bbbb3 cccc3 ...
3 aaaa4 bbbb4 cccc4 ...
...and so on
Run Code Online (Sandbox Code Playgroud)
我该怎样做才能实现这个目标?谢谢你的答案!
这是无效的json,这就是为什么read_json不解析它.
{u'IP': u'aaaa1', u'Domain': u'bbbb1', u'Time': u'cccc1', ..... },
Run Code Online (Sandbox Code Playgroud)
应该
{"IP": "aaaa1", "Domain": "bbbb1", "Time": "cccc1", ..... },
Run Code Online (Sandbox Code Playgroud)
您可以使用正则表达式粉碎此(整个文件)以查找这些内容,例如:
In [11]: line
Out[11]: "{u'IP': u'aaaa1', u'Domain': u'bbbb1', u'Time': u'cccc1'},"
In [12]: re.sub("(?<=[\{ ,])u'|'(?=[:,\}])", '"', line)
Out[12]: '{"IP": "aaaa1", "Domain": "bbbb1", "Time": "cccc1"},'
Run Code Online (Sandbox Code Playgroud)
注意:这会被某些字符串绊倒,因此请谨慎使用.
一个更好的"解决方案"是确保你首先拥有有效的json ......看起来这是来自python的str/unicode/repr而不是json.dumps.
注意:json.dumps生成有效的json,因此可以读取read_json.
In [21]: repr({u'IP': u'aaa'})
Out[21]: "{u'IP': u'aaa'}"
In [22]: json.dumps({u'IP': u'aaa'})
Out[22]: '{"IP": "aaa"}'
Run Code Online (Sandbox Code Playgroud)
如果有人创造了这个"json",那就抱怨!这不是json.
| 归档时间: |
|
| 查看次数: |
4650 次 |
| 最近记录: |