Предположим у меня есть следующие данные в read.txt:Python - Динамически занесения Переменная
_app1_ip_
_app2_ip_
_app1_ip_
_app3_ip_
_app2_ip_
И я хочу, чтобы заменить каждый с определенным соответствующим значением (в данном случае, значения в «списке») и вывода, в другой файл (out.txt):
list = ['app1', 'app2', 'app3']
for l in list:
field = '_%s_ip_' %l
patterns = {
field : l,
}
with open("read.txt", "r") as my_input:
content = my_input.read()
with open("out.txt", "w+") as my_output:
for i,j in patterns.iteritems():
content = content.replace(i,j)
my_output.write(content)
То, что я хочу следующее data.txt:
app1
app2
app1
app3
app2
То, что я на самом деле получаю, это:
_app1_ip_
_app2_ip_
_app1_ip_
app3
_app2_ip_
Это кажется таким простым .. было бы легким однострочным в bash/sed. Может ли кто-нибудь помочь/объяснить?
Спасибо за ответ. Тем не менее, я получаю: NameError: name 'patterns' не определяется при использовании pattern [field] = l. И это не нравится синтаксис второго варианта (прерывается в цикле for). – syntax
Я использую python 2.6, если это имеет значение ... – syntax
Хорошо исправлено первое ... просто нужно добавить 'patterns = {}' в начало цикла. Теперь он добавляет замены в нижней части файла, но оставляя некоторые нетронутые наверху ... должно быть проблемой с кодом замены – syntax