所以-
解析这并不是那么困难,尽管,根据您的示例,比您描述的要容易一些。在
如果“每一行都是一个JSON对象”——您只需将每一行输入JSON解析器,并将生成的对象收集到一个列表中:import json
for filename in os.listitdir():
data = []
with open(filename) as jsonfile:
for line in jsonfile:
if not line.strip(): continue #avoid crash at empty lines and newline at end of file data.append(json.loads(line.strip()))
# do your CSV output processing here.
但是,在上面的示例中,每一行都不是一个完整的json文件—更像是整个文件都是有效的json对象,这是一种规范,因此jsut执行以下操作:
^{pr2}$
应该为你做这项工作。在
现在,这是解析-如果你的问题只是关于这个,这些应该足够作为一个答案。我想,在每个CSV结果文件中获取数据的含义并选择要输出的字段和标题将是一个更大的问题——但是它们,也许你可以一直工作到解析工作完成,然后用更具体的例子来提出更多的问题
请注意,对于处理数千个文件,最好使用Python的迭代器“pattern”,这样就可以将上述解析逻辑与处理数据和创建输出的部分分开,并且每次在内存中解析一个JSON文件:import json
def get_json_data(path_to_files):
for filename in os.listitdir(path_to_files):
data = json.load(open(filename))
yield data
def main():
for data in get_json_data():
# implement CSV logic here.