你可以使用正則表達式函數從re模塊。例如是這樣的:
import re
pattern = re.compile(r"^Name=(.*)$", flags=re.MULTILINE)
re.sub(pattern, "Name=%s" % replace_name, s)
(該re.MULTILINE
選項使^
和$
匹配的開始和線路,分別的端部中,除了開始和字符串的結尾。)
編輯補充:根據您的意見Emil's answer,似乎你操縱Desktop Entry文件。它們的語法似乎非常接近ConfigParser模塊所使用的語法(可能在區段名稱的區分大小寫的區別方面存在一些差異,並且期望在解析/序列化循環中保留註釋)。
一個例子:
import ConfigParser
parser = ConfigParser.RawConfigParser()
parser.optionxform = str # make option names case sensitive
parser.read("/etc/skel/examples.desktop")
parser.set("Desktop Entry", "Name", replace_name)
parser.write(open("modified.desktop", "w"))
這與「已知元素」有什麼關係?你似乎知道你到底想要取代什麼! – SilentGhost 2010-12-08 14:10:18
你的意思是你想要替換「Name =」和行尾之間的文本嗎?整個文件是「Something =」格式的嗎?你在做更多的替代品嗎? – 2010-12-08 14:56:10
你有沒有遇到`ConfigParser`?它對你有用嗎? http://docs.python.org/library/configparser.html – katrielalex 2010-12-08 15:09:15