использование регулярных выражений для строк в файле - PullRequest
1 голос
/ 01 октября 2019

У меня есть текстовый файл, который должен измениться так:

Пройдите по строкам и, если вы видите print var [number or string] , измените его на print(var [число или строка])

Для ввода:

a = [1,2,3]

распечатать [1]

вывод должен быть:

a = [1,2,3]

print (a [1])

Я пробовал это:

import re
with open('file.txt', 'r') as f:
     data = f.read()

newline = re.sub(r"^print\s(.+)", r"print(\1)", data)

with open('file.txt', 'w') as f:
f.write(newline)

Работает только тогда, когда печать находится в первой строке. Как мне проверить все строки и изменить их?

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Вам необходимо использовать флаг M, чтобы сопоставить начало строки с ^ вместо начала текста.

re.sub("^a", "c", "abba\nabba", flags=re.M)
'cbba\ncbba'
0 голосов
/ 01 октября 2019

Посмотрите на углубления. Единственная строка внутри with - это строка, читающая строку текста, и вам нужно включить строки, в которых вы изменяете текст, и строку, в которую записывается новый файл.

Попробуйте это:

with open('file.txt', 'r') as f:
    with open('file-2.txt', 'w') as fout:
        data = f.read()
        newline = re.sub(r"^print\s(.+)", r"print(\1)", data)
        fout.write(newline)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...