Мне нужна следующая строка: test_list = "root / abc_test.list someText tests / long_test.list someText tests / h2.list"
, который нужно изменить на:
test_list="tests/My_test.list"
** .list
может появиться в любом месте строки.
на самом деле, что нужно сделать, это найти каждое слово, которое имеет ".list, и если это long_test.list, изменить его на My_test.list
, ипосле его изменения удалите все остальные подстроки, содержащие ".list"
, и примите ту, которая была изменена.
, чтобы решить эту проблему, я изменил слово long_test.list на xXxXxX, а затем удалил все .listсловами, а затем изменил xXxXxX обратно на My_test.list
. Для этого я использовал следующий код:
with in_place.InPlace('RUN_NEW') as file:
for line in file:
line = line.replace('long_test_list', 'xXxXxX')
file.write(line)
file.close()
with open("RUN_NEW","r+") as f:
new_f = f.readlines()
f.seek(0)
for line in new_f:
line = str(line).split(' ')
print(line)
print(len(line))
for word in line:
if ".list" not in word:
f.write(word)
f.close()
with open("file.txt","r+") as f:
new_f = f.readlines()
f.seek(0)
for line in new_f:
line = str(line).split(' ')
for k in line:
if ".list" not in k:
s=' '
print(s.join(k.split('"')))
#f.write(s.join(k.split('"')))
Проблема с приведенным выше кодом заключается в том, что строка после разделения на ('') выглядит как ['set', 'test_list="tests/long_test.list', 'tests/h2.list"']
, когда я пытаюсь присоединить его обратно, он сохраняет его с "\n"
после каждой подстроки, которая не содержит .list
. Я думал о регулярном выражении, но это только удаляет .list
сама, вся подстрока. И всеo Я хотел бы сохранить кавычки без их удаления во время разделения.