найти и заменить ! с скобкой до и после .png

import re
a=["fig shown abcd.png", "referring !12254383.png!", "a!=12"]
p=[re.sub(r'[\w]+\.png','([\w]+\.png)', a[i]) for i in range(len(a)) if a[i] != ""]
print(p)

Ожидаемый результат:

["fig shown (abcd.png)", "referring (12254383.png)", "a!=12"]

2 ответа

С помощью re.sub

p = [re.sub(r' ([^s](.*\.png)(!|))',r' (\2)', i) for i in a]
print(p)
#['fig shown (bcd.png)', 'referring (12254383.png)', 'a!=12']

Я обновлю более точный ответ, но пока это дает требуемый результат

import re
a = ["fig shown abcd.png", "referring !12254383.png!", "a!=12"]
for i in range(len(a)):
    temp = re.search(r'[!]\w+[.]png[!]', a[i])
    if temp:
        a[i] = list(a[i])
        a[i][temp.span()[0]] = '('
        a[i][temp.span()[1]-1] = ')'
        a[i] = ''.join(a[i])
print(a)

выход

['fig shown abcd.png', 'referring (12254383.png)', 'a!=12']

Другие вопросы по тегам