Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将文本文件转换为json_Python_Json - Fatal编程技术网

在python中将文本文件转换为json

在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总是用@分隔,其中城市由以下两种方式分隔:;或: 在

我有多个文档,总共大约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总是用@分隔,其中城市由以下两种方式分隔:;或:

在我用代码解析它之后:

#!/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语法,但这只是一个简单的解决方案。