我正在嘗試使用 Python 在檔案中僅用同一子字串的一部分替換某種型別的子字串的所有實體。例如...假設我們有檔案
Here is a sample image:

And some more words.
現在我需要創建一個程式來接收這個輸入并產生輸出:
Here is a sample image:
<center>
<img src="../attachments/someimage.png">
</center>
And some more words.
更準確地說,我需要用<center> <img src="../attachments/someimage.png"></center>. 查看該someimage.png部分如何包含在輸出字串中?這就是我正在努力做的事情(否則使用.replace就足夠了)。
我試過使用正則運算式,但沒有運氣。我想我可以逐行遍歷檔案,但我覺得必須有更好的方法來做到這一點。
有推薦嗎?
謝謝!
uj5u.com熱心網友回復:
@BrokenBenchmark 有一個很好的答案,除了我會做一些小改動以允許 markdown 語法字串中方括號之間的文本。
import re
original = """
Here is a sample image:

And some more words.
"""
markdown_pattern = re.compile(r'!\[.*]\((. )\)')
new = markdown_pattern.sub('<center>\n\t<img src="\g<1>">\n</center>', original)
print(new)
輸出:
Here is a sample image:
<center>
<img src="someimage.png">
</center>
And some more words.
另外,我假設附件檔案夾也應該是降價路徑的一部分。
uj5u.com熱心網友回復:
您可以使用捕獲組來提取檔案名,然后使用re.sub()進行替換,使用\g<1>來參考匹配中的第一個(并且在這種情況下,僅)捕獲組。
pattern = re.compile(r"!\[\]\((. )\)")
result = re.sub(pattern, "<center>\n\t<img src=\"../attachments/\g<1>\">\n<center>", data)
print(result)
當data設定為問題中給出的示例文本時,結果為:
Here is a sample image:
<center>
<img src="../attachments/someimage.png">
</center>
And some more words.
uj5u.com熱心網友回復:
沒有理由編譯正則運算式。也讓你的正則運算式意味著你想要的更多,而不是抓住一切。
import re
replace_with_this = '''<center>
<img src="someimage.png">
</center>'''
find_this = r"\!\[\w \d]\(\w \.png\)"
re.sub(find_this, original, replace_with_this)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/437244.html
下一篇:正則運算式模式匹配錯誤的字串
