Замена строк и RegEx в файле

Это мой первый вопрос, и я довольно плохо знаком с 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» в моем примере ниже), мне удалось удалить первую часть name = и заменить конечную строку запятой, но среднюю часть (содержащую несогласованное количество пробелов и табуляции + NewName =), Я не могу справиться с этим.

Мой код до сих пор:

d =    {
  "name=": "",
  "
": ","}


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=": "",
      "
": ",",
       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")

Заранее спасибо за помощь, ребята

Всего 1 ответ


Используя Regex.

Пример:

import re

res = {}
with open(filename) as infile:
    for line in infile:                                   #Iterate Each line
        k, v = re.findall(r'="(.*?)"', line.strip())    #Get Key-Value --> Get string in Quotes
        res[k] = v                                        #Form output
print(res)

Есть идеи?

10000