Есть много потоков на поиске заменить текст для python, но я думаю, что мой вопрос отличается.найти строку, заменить несколько строк
У меня есть куча файлов Java с
System.out.println("some text here");
Я пытаюсь написать питон скрипт, который заменит их все
if (logger.isInfoEnabled()) {
logger.info("some text here");
}
Для этого я попробовал:
def findReplace(fileName, sourceText, replaceText):
file = open(fileName, "r") #Opens the file in read-mode
text = file.read() #Reads the file and assigns the value to a variable
file.close() #Closes the file (read session)
file = open(fileName, "w") #Opens the file again, this time in write-mode
file.write(text.replace(sourceText, replaceText)) #replaces all instances of our keyword
# and writes the whole output when done, wiping over the old contents of the file
file.close() #Closes the file (write session)
и передать:
filename=Myfile.java, sourceText='System.out.println', replaceText='if (logger.isInfoEnabled()) { \n' \logger.info'
Однако я изо всех сил пытаюсь получить закрытие «на замену». Он должен быть обернут вокруг той же выходной строки, которая уже существует. Какие-нибудь советы?
Спасибо.
Вы можете использовать r '' 'System \ .out \ .println \ ("(. +?) (? =" \);) "\);' '' Лениво взять все символы до закрытия «); который должен учитывать любые скрытые кавычки внутри. – hexparrot
Несомненно, ленивый поиск частично решает проблему (хотя я не уверен, что взгляд действительно необходим?). Всегда есть проблема с тем, что строка содержит '\";) 'хотя. – bluepnume
@hexparrot Я не могу заставить вашу работу работать. – dublintech