[英]Python regex to replace line in file
我有一個快速且骯臟的構建腳本,需要在一個小的xml配置文件中更新幾行。 由於文件太小,我使用效率低下的過程來更新文件,只是為了保持簡單:
def update_xml(property, value):
for line in fileinput.input(os.path.join(app_dir, 'my.xml'), inplace=True):
if property is 'version':
line = re.sub(r'(<version>).*?(</version>)', '\1%s\2' % value, line, flags=re.IGNORECASE)
elif property is 'brand':
line = re.sub(r'(<property name="brand" type="string">).*?(</property>)', '\1%s\2' % value, line, flags=re.IGNORECASE)
elif property is 'env':
line = re.sub(r'(<property name="env" type="string">).*?(</property>)', '\1%s\2' % value, line, flags=re.IGNORECASE)
print line
我有2個問題:
<version>abc</version>
,而是獲得了由控制字符包圍的版本值。 我嘗試將反斜杠加倍,刪除格式化的打印件和其他一些內容,但是不能完全正確。 print line
)時,我得到了幾個額外的換行符。 我在這煩嗎?
嘗試將"\\1%s\\2" by "\\g<1>%s\\g<2>"
替換"\\1%s\\2" by "\\g<1>%s\\g<2>"
,這可能是問題所在。
關於換行,印刷品可能會在現有行的基礎上添加第二行。
您可以嘗試: print line,
並用逗號來抑制新行char
使用原始字符串以避免\\1
和\\2
成為控制字符: r'\\1%s\\2'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.