Добавить все в словарь из цикла for, который парсит
Есть такой код
import re
test = ""
text = ""
with open('test.txt', 'r') as fileText:
test = fileText.read()
for m in re.finditer('data-value=\"(.*?)\" .*\s+.*\s+.*\s+.*?\s+class=\"currSymbol\">(.*?)<', test):
text += str(m.group(2, 1)) + "\n"
print(m.group(2, 1))
print(text)
При выполнение кода в text, добавляются все спаршенные данные, но надо сделать из этого словарь с ключ: значение. Никак не могу понять как это сделать. При парсе выходят данные такого типа
('ZOI', '688')
('ZNE', '1231')
('ZZC', '794')
('ZRC', '600')
('ZSE', '1341')
('ZUR', '815')
Ответы (2 шт):
Автор решения: Павел
→ Ссылка
Можно сделать при помощи еще одного регулярного выражения, распарсить текст по кавычкам в каждой строке и создать на основании этого словарь:
import re
text = """('ZOI', '688')
('ZNE', '1231')
('ZZC', '794')
('ZRC', '600')
('ZSE', '1341')
('ZUR', '815')
"""
result = {}
for line in text.splitlines():
line = re.search(r"'(.*)'.*'(.*)'", line)
result[line.group(1)] = line.group(2)
print(result)
Вывод:
{'ZOI': '688',
'ZNE': '1231',
'ZZC': '794',
'ZRC': '600',
'ZSE': '1341',
'ZUR': '815'}
Автор решения: Alex Titov
→ Ссылка
Так зачем делать текст, чтобы потом превращать в словарь, формируйте сразу словарь, примерно так:
d = {m.group(2): m.group(1) for m in re.finditer('ваше_регулярное_выражение', test)}