, поэтому я хотел бы из файла input.txt
создать словарь
, например, вот пример файла input.txt
%. VAR %first=Billy
%. VAR %last=Bob
%. PRINT VARS
%. VAR %petName=Gato
%. VAR %street="1234 Home Street"
%. VAR %city="New York"
%. VAR %state=NY
%. VAR %zip=21236
%. VAR %title=Dr.
%. PRINT VARS
%. FORMAT LM=5 JUST=LEFT
%. PRINT FORMAT
, поэтому VAR %varName=value
то есть в случае %first=Billy
вы получите что-то вроде varDict = {"first": "Billy"}
верно? Теперь я хочу знать, как это сделать через весь файл
Есть два словаря, которые мне нужно заполнить, один для переменных и один для FORMAT, который просто содержит значения, на самом деле ничего не делает на данный момент.
Что касается желаемого вывода, я думаю о чем-то подобном, я бы использовал функцию pprint как pprint.pprint(varDict , width=30)
и вывел бы что-то вроде
{'first': 'Billy',
'last': 'Bob'}
{'city': 'New York',
'first': 'Billy',
'last': 'Bob',
'petName': 'Gato',
'state': 'NY',
'street': '1234 Home Street',
'title': 'Dr.',
'zip': '21236'}
{'BULLET': 'o',
'FLOW': 'YES',
'JUST': 'LEFT',
'LM': '5',
'RM': '80'}
РЕДАКТИРОВАТЬ
Я собираюсь ввести код, который у меня сейчас есть для моего setFormatWIP.py
import re
import sys
import pprint
input=(sys.argv[1])
regexFormat = re.compile(r'^%\.\s*?FORMAT\s*?((?:(?:\w+)=(?:\w+)\s*)*)$', re.MULTILINE)
regexPrintFORMAT = re.compile(r'^%\.\s*PRINT\s(FORMAT)',re.MULTILINE)
file = open(input)
line = file.readline()
formatDict = dict()
while line:
formatList = regexFormat.findall(line)
printFormatObj = regexPrintFORMAT.search(line)
if printFormatObj != None:
pprint.pprint(formatDict, width=30)
for param in formatList[0].split():
splitParam = param.split('=')
formatDict[splitParam[0]] = splitParam[1]
line = file.readline()
file.close()
, который работает, я получаю эту ошибку
Traceback (most recent call last):
File "formatTest.py", line 19, in <module>
for param in formatList[0].split():
IndexError: list index out of range