在python中将文本文件转换为json
我有多个文档,总共大约400 GB,我想将它们转换为json格式,以便转到elasticsearch进行分析 每个文件大约有200 MB 原始文件看起来像:在python中将文本文件转换为json,python,json,Python,Json,我有多个文档,总共大约400 GB,我想将它们转换为json格式,以便转到elasticsearch进行分析 每个文件大约有200 MB 原始文件看起来像: IUGJHHGF@BERLIN:lhfrjy 0t7yfudf@WARSAW:qweokm246 0t7yfudf@CRACOW:Er747474 0t7yfudf@cracow:kui666666 000t7yf@Vienna:1йй2ц2й2цй2цц3у 它的字符不仅仅是英语。键1总是用@分隔,其中城市由以下两种方式分隔:;或: 在
IUGJHHGF@BERLIN:lhfrjy
0t7yfudf@WARSAW:qweokm246
0t7yfudf@CRACOW:Er747474
0t7yfudf@cracow:kui666666
000t7yf@Vienna:1йй2ц2й2цй2цц3у
它的字符不仅仅是英语。键1总是用@分隔,其中城市由以下两种方式分隔:;或:
在我用代码解析它之后:
#!/usr/bin/env python
# coding: utf8
import json
with open('2') as f:
for line in f:
s1 = line.find("@")
rest = line[s1+1:]
if rest.find(";") != -1:
if rest.find(":") != -1:
print "FOUND BOTH : ; "
s2 = -0
else:
s2 = s1+1+rest.find(";")
elif rest.find(":") != -1:
s2 = s1+1+rest.find(":")
else:
print "FOUND NO : ; "
s2 = -0
key1 = line[:s1]
city = line[s1+1:s2]
description = line[s2+1:len(line)-1]
所有文件看起来像:
RRS12345 Cracow Sunflowers
RRD12345 Berin Data
解析之后,我希望得到输出:
{
"location_data":[
{
"key1":"RRS12345",
"city":"Cracow",
"description":"Sunflowers"
},
{
"key1":"RRD123dsd45",
"city":"Berlin",
"description":"Data"
},
{
"key1":"RRD123dsds45",
"city":"Berlin",
"description":"1йй2ц2й2цй2цц3у"
}
]
}
如何快速将其转换为所需的json格式,而不是只有英文字符?迭代每一行并形成您的dict Ex:
d = {"location_data":[]}
with open(filename, "r") as infile:
for line in infile:
val = line.split()
d["location_data"].append({"key1": val[0], "city": val[1], "description": val[2]})
print(d)
重复每一行,形成你的口述 Ex:
d = {"location_data":[]}
with open(filename, "r") as infile:
for line in infile:
val = line.split()
d["location_data"].append({"key1": val[0], "city": val[1], "description": val[2]})
print(d)
输出样本:
{“位置数据”:[{“城市”:“克拉科夫”,“键1”:“RRS12345”,“描述”:“向日葵”},{“城市”:“Berin”,“键1”:“RRD12345”,“描述”:“数据”},{“城市”:“克拉科夫2”,“键1”:“RRS12346”,“描述”:“向日葵”},{“城市”:“Berin2”,“键1”:“RRD12346”,“描述”:“数据”},{“城市”:“克拉科夫3”,“键1”:“RRS12346”,“描述”:“Sunflowers”},{“city”:“Berin3”,“key1”:“RRD12346”,“description”:“Data”}]}
输出样本:
{“位置数据”:[{“城市”:“克拉科夫”,“键1”:“RRS12345”,“描述”:“向日葵”},{“城市”:“Berin”,“键1”:“RRD12345”,“描述”:“数据”},{“城市”:“克拉科夫2”,“键1”:“RRS12346”,“描述”:“向日葵”},{“城市”:“Berin2”,“键1”:“RRD12346”,“描述”:“数据”},{“城市”:“克拉科夫3”,“键1”:“RRS12346”,“描述”:向日葵“},{“城市”:“Berin3”,“键1”:“RRD12346”,“描述”:“数据”}]}
你能展示一下你的尝试并描述它到底是如何失败的吗?你需要特别使用Python吗,或者一个更快的非Python解决方案可以吗?有没有城市的名称中有空格?或者描述中有空格?如果有,那是什么样子的?名称中没有空格。语言不重要。理论上我可以在我编写的脚本的结尾,手动强制使用json语法,但这只是一个简单的转储解决方案。你能展示一下你尝试了什么,并描述它到底是如何失败的吗?你是否需要特别使用Python,或者一个更快的非Python解决方案会做什么?是否有任何城市的名称中有空格?或者在描述中有空格?如果是,什么看起来像吗?名称中不存在空格。语言不重要。理论上,我可以在我编写的脚本末尾打印,并手动强制使用json语法,但这只是一个简单的解决方案。