Вы должны поместить записи в словарь, а не так много отдельных переменных - очевидно, ключи, которые вы используете n eed NOT быть допустимым в качестве имен переменных (это сокращение в «Url/Host» было бы убийцей!), но они будут просто прекрасны в качестве строковых ключей в словаре.
import re
there = re.compile(r'''(?x) # verbose flag: allows comments & whitespace
^ # anchor to the start
([^:]+) # group with 1+ non-colons, the key
:\s* # colon, then arbitrary whitespace
(.*) # group everything that follows
$ # anchor to the end
''')
, а затем
configdict = {}
for aline in open('thefile.txt'):
mo = there.match(aline)
if not mo:
print("Skipping invalid line %r" % aline)
continue
k, v = mo.groups()
configdict[k] = v
возможность создания моделей RE «многословный» (начиная их с (?x)
или использованием re.VERBOSE
в качестве второго аргумента re.compile
) очень полезно, чтобы позволить вам уточнить ваш REs с комментариями и красиво выравнивающими пробелами. Я думаю, что это печально недоиспользуется ;-).
Использование str.split (":") не является опцией? – extraneon