У меня есть фрагмент кода, который мне нужно удалить из нескольких файлов, который начинается примерно так:
<?php
//{{56541616
и заканчивается так:
//}}18420732
?>
, где обе строки чиселможет быть любой последовательностью букв и цифр (не одной и той же).
Я написал программу на Python, которая будет возвращать всю входную строку, за исключением этой проблемной строки:
def removeInsert(text):
m = re.search(r"<\?php\n\/\/\{\{[a-zA-Z0-9]{8}.*\/\/\}\}[a-zA-Z0-9]{8}\n\?>", text, re.DOTALL)
return text[:m.start()] + text[m.end():]
Эта программа работаетздорово, когда я вызываю его с помощью removeInsert ("" "[file text]" "") - тройные кавычки позволяют читать его как многострочное.
Я попытался расширить это, чтобы открыть файл и передать строковое содержимое файла в removeInsert () с помощью этого:
def fileRW(filename):
input_file = open(filename, 'r')
text = input_file.read()
newText = removeInsert(text)
...
Однако, когда я запускаю fileRW ([input-file)]), Я получаю эту ошибку:
return text[:m.start()] + text[m.end():]
AttributeError: 'NoneType' object has no attribute 'start'
Я могу подтвердить, что «текст» в последнем коде на самом деле является строкой и содержит код проблемы, но кажется, что код removeInsert () нене работает над этой строкой.Мое лучшее предположение заключается в том, что это связано с тройным цитированием, которое я делаю при вводе строки вручную в removeInsert ().Возможно, текст, который fileRW () передает в removeInsert (), не имеет тройных кавычек (я пробовал разные способы заставить его использовать тройные кавычки (добавлено "\" \ "\" "), но это не работает)Я не знаю, как это исправить, и не могу найти информацию об этом в моем поиске в Google. Есть предложения?