Это мой первый вопрос, и я довольно новичок в Python.
Хотя я действительно пробовал несколько разных вещей, прежде чем спросить :-D
У меня есть файл (test.txt), содержащий некоторый текст, организованный следующим образом:
name="NAME-ABC" NewName="GOOD MORNING"
name="NAME-123456" NewName="HELLO"
name="NAME-3" NewName="ALLO"
Вывод, который я пытаюсь получить, - это словарь с предыдущими значениями, такими как:
{"NAME-ABC":"GOOD MORNING","NAME-123456":"HELLO","NAME-3":"ALLO"}
Используя небольшой словарь («d» в моем примере ниже), мне удалось удалить имя = разделить и заменить конечную строку запятой, но в средней части (содержащей непоследовательное количество пробелов и табуляций + NewName =) я не могу с этим справиться.
Пока мой код:
d = {
"name=": "",
"\n": ","}
for x in range(len(d)):
with open("test.txt") as f:
newText=f.read().replace(list(d.items())[x][0], list(d.items())[x][1])
with open("test.txt", "w") as f:
f.write(newText)
, который дает мне файл text.txt следующим образом:
"NAME-ABC" NewName="GOOD MORNING",
"NAME-123456" NewName="HELLO",
"NAME-3" NewName="ALLO"
, но если я добавлю что-то вроде
d = {
"name=": "",
"\n": ",",
re.compile(r'\s*NewName='): ":"}
, я получу следующую ошибку
TypeError: аргумент replace () 1 должен быть str, а не re.Pattern
Затем я попытался использовать re.sub для обработки регулярных выражений, но теперь это просто не помогает вообще ничего (программа запускается, но в файле нет изменений):
for line in "test.txt":
line = re.sub(r'\s*NewName=',":","test.txt")
Заранее спасибо за помощь, ребята