Как конвертировать текстовый файл в JSON на python?

#python

#питон

Вопрос:

У меня есть текстовые файлы, которые содержат эти данные:

 SSID: Wudi, quality: 86% SSID: Vodafone_ADSL_2018, quality: 92% SSID: Akram, quality: 43% SSID: WE_BAE8DF, quality: 31% SSID: BlzS-b21hcjE5MjE5OTg, quality: 31% SSID: OPPO A53, quality: 31% SSID: Vodafone_ADSL_2018, quality: 92% SSID: WIFI 1, quality: 87% SSID: , quality: 31% SSID: pretty angel, quality: 31% SSID: NETGEAR, quality: 84% SSID: Akram, quality: 40% SSID: memo, quality: 85% SSID: Wudi, quality: 86% SSID: AndroidAP63FC, quality: 38%   

Поэтому я хочу преобразовать свой текстовый файл в JSON. Я попробовал этот код:

 import json filename = 'data_quality/quality-2021-11-21_12-10-21.908466.txt' dict1 = {} with open(filename) as fh:  for line in fh:  command, description = line.strip().split(None, 1)  dict1[command] = description.strip()  out_file = open("testooo.json", "w") json.dump(dict1, out_file, indent=4, sort_keys = False) out_file.close()  

но это дает мне файл в таком формате:

 {  "SSID:": "AndroidAP63FC, quality: 38%" }  

но мне нужно, чтобы файл был отформатирован следующим образом: сначала удалите «SSID», затем он станет

 {  "AndroidAP63FC, quality": "38%",  "Wudi, quality": "86%",  "Vodafone_ADSL_2018, quality:" "92%",  and so on... }  

Примечание: У меня более 1000 файлов, поэтому я хочу сделать это с помощью кода.

Комментарии:

1. вы могли бы попробовать разделить на двоеточие

Ответ №1:

Используйте двоеточие в качестве split() разделителя, затем используйте 2-й элемент в качестве ключа и третий элемент в качестве значения:

 import json filename = 'data_quality/quality-2021-11-21_12-10-21.908466.txt' dict1 = {} with open(filename) as fh:  for line in fh:  _, command, description = line.strip().split(':')  dict1[command.strip()] = description.strip()  with open("testooo.json", "w") as out_file:  json.dump(dict1, out_file, indent=4, sort_keys = False)  

Комментарии:

1. Спасибо! это работает.

Ответ №2:

Вы можете использовать регулярное выражение для захвата групп, а затем изменить порядок слов.

 import json import re  filename = 'data_quality/quality-2021-11-21_12-10-21.908466.txt' dict1 = {} with open(filename) as fh:  for line in fh:  name, percent = re.findall("SSID: ([^,]*), quality: (d )%", line.strip())[0]  dict1[f"{name}, quality"] = f"{percent}%" # ...  

Ответ №3:

 import json filename = 'test.txt' dict1 = {} with open(filename) as fh:  for line in fh:  line = line.replace('SSID: ','')  command, description = line.strip().split(None, 1)  dict1[command] = description.strip() print(dict1) out_file = open("testooo.json", "w") json.dump(dict1, out_file, indent=4, sort_keys = False) out_file.close()  

Комментарии:

1. единственное, что вам нужно сделать, это добавить «строка = строка.заменить(‘SSID: ‘,»)»

2. Это тот же ответ, который дал Бармар.