Python 找到并替换!在.png前后加括号

Python 找到并替换!在.png前后加括号,python,replace,re,Python,Replace,Re,预期产出: 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)", "

预期产出:

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"]
输出


['fig show abcd.png','reference(12254383.png)'a!=12']
使用
re.sub

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)

第一个字符串中png前没有感叹号;你的头上写着替换!before和after.png
p = [re.sub(r' ([^s](.*\.png)(!|))',r' (\2)', i) for i in a]
print(p)
#['fig shown (bcd.png)', 'referring (12254383.png)', 'a!=12']