#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. Это тот же ответ, который дал Бармар.