Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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-从txt文件到字典再到json_Python_Json_Python 3.x_Dictionary - Fatal编程技术网

python-从txt文件到字典再到json

python-从txt文件到字典再到json,python,json,python-3.x,dictionary,Python,Json,Python 3.x,Dictionary,我想把一个文件转换成json。 该文件的格式为: Temp=24.0* Humidity=41.0% Date=02/01/17-20:37 Temp=24.0* Humidity=42.0% Date=02/01/17-20:38 Temp=24.0* Humidity=42.0% Date=02/01/17-20:39 我正在使用以下代码: list = {} with open("record.txt") as f: for line in f: if not ("Faile

我想把一个文件转换成json。 该文件的格式为:

Temp=24.0* Humidity=41.0% Date=02/01/17-20:37
Temp=24.0* Humidity=42.0% Date=02/01/17-20:38
Temp=24.0* Humidity=42.0% Date=02/01/17-20:39
我正在使用以下代码:

list = {}
with open("record.txt") as f:
  for line in f:
    if not ("Failed" in line):
      lists = line.split(" ")
      for l in lists:
        ll = dict([l.split("=")])
        // print(json.dumps(ll))
        list.update(ll)
当我打印创建的词典时,我得到了

>>> print (list)
{'Temp': '29.0*', 'Humidity': '31.0%', 'Date': '15/07/17-10:56\n', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Temp': '21.0*'}
我不明白为什么。有人知道我为什么没有整本字典吗


在转换为json之前,我还将通过新行
/n
与子字典分离。这可能吗?

您可以创建一个这样的词典列表,然后可以进行任何修改

list = {}
complete_list=[]
with open("record.txt") as f:
  for line in f:
    if not ("Failed" in line):
      lists = line.split(" ")
      lists[-1] = lists[-1].strip()       #it should remove the \n at the end.
      for l in lists:
        ll = dict([l.split("=")])
        // print(json.dumps(ll))
        list.update(ll)
        complete_list.append(list)

您的输入文件包含三次相同的唯一键集,因此Python中的对应表示形式(可以序列化为JSON)是一个字典数组

尝试对代码进行以下更改:

列表=[]
将open(“record.txt”)作为f:
对于f中的行:
如果没有(第行中的“失败”):
lists=line.rstrip().split(“”)
ll={}
对于列表中的l:
k、 v=l.split(“=”)
ll[k]=v
list.append(ll)

如果你这样做:

打印列表

你应该得到:

打印列表
[{'Date':'02/01/17-20:37','Temp':'24.0*','湿度':'41.0%},{'Date':'02/01/17-20:38','Temp':'24.0*','湿度':'42.0%},{'Date':'02/01/17-20:39','Temp':'24.0*,'湿度':'42.0%}]

然后,您可以使用以下命令转储到JSON:

导入json
json.dumps(列表)
“[{”日期“:“02/01/17-20:37”,“温度“:“24.0*”,“湿度“:“41.0%”,{”日期“:“02/01/17-20:38”,“温度“:“24.0*”,“湿度“:“42.0%”,},{”日期“:“02/01/17-20:39”,“温度“:“24.0*”,“湿度“:“42.0%””

您正在覆盖每个迭代中的值。。