Я только недавно запустил python и никогда раньше не писал никакого кода.Я использовал регулярное выражение для сопоставления строки во входном файле (что было успешно), но я действительно изо всех сил пытаюсь найти способ заменить эту строку в файле другой, используя регулярное выражение.
with open( fileToSearch, "r+" ) as file:
for line in fileinput.input( fileToSearch ):
string4=line
result1 = re.search(r'(KNOWLEDGECENTER\/.*?\/)' + re.escape(taxonomy), string4)
print (result1)
result2 = re.sub(result1, r'(KNOWLEDGECENTER\/\t(\1)\/\)' + taxonomy, string4)
print (result2)
file.write(result2)
Я ожидал, что re.sub заменит строку в переменной result1 строкой замены, но вместо этого я получаю следующую ошибку:
повышение TypeError, «первый аргумент должен быть строкой или скомпилированным шаблоном» TypeError: firstаргумент должен быть строковым или скомпилированным шаблоном
Если я помещу переменную result1 в кавычки в операторе re.sub, как показано ниже, я не получаю сообщение об ошибке, но входной файл не обновляется сзамещающая строка
result2 = re.sub('result1', r'(KNOWLEDGECENTER\/\t(\1)\/\)' +
taxonomy, string4)
код re.search работает так, что print (result1) возвращает: <_sre.SRE_Match объект в 0x02A120E0> для каждой строки во входном файле