我正在嘗試搜索和替換 .xml 檔案中的某些單詞并將其替換為另一個單詞,但我有點掙扎。
到目前為止,我一直在使用此代碼:
import xml.etree.ElementTree as ET
with open('Rom1.xml', encoding="utf8") as f:
tree = ET.parse(f)
#root = tree.find('ExportedObjects')
root = tree.getroot()
for elem in root.iter():
try:
elem.text = elem.text.replace('Rom1', 'Rom2')
except AttributeError:
pass
Rom1.xml這是顯示結構的 XML 檔案的快照
XML 檔案非常大,但它包含字串 'Rom1' 41 次,我想替換所有這些。
我知道在文本編輯器中進行簡單的搜索和替換就可以完成這項作業,但我想自動執行此操作,因為我將對數百個檔案執行此操作。
任何幫助都會得到幫助:)
uj5u.com熱心網友回復:
如果沒有歧義的可能性,那么你可以這樣做:
with open('Rom1.xml', encoding='utf-8', mode='r ') as xml:
content = xml.read().replace('Rom1', 'Rom2')
xml.seek(0)
xml.write(content)
xml.truncate()
在這種情況下,不需要 truncate() 呼叫。但是,如果 replace() 的第二個引數比第一個短,那么這將是至關重要的。把它留在那里以應對所有可能發生的事情
uj5u.com熱心網友回復:
好的,所以我嘗試了其他方法并取得了巨大成功:
import xml.etree.ElementTree as ET
Rom2 = input('Number: ')
input_file = "Rom1.xml"
output_file = Rom2 ".xml"
with open(input_file) as f:
xml_content = f.readlines()
with open(output_file, 'w ') as f:
for line in xml_content:
f.write(line.replace('Rom1', Rom2))
但是,如果我想將第二個字串 f.ex 'SQ4XXX' 替換為 'SQ4050' 那么它會同時替換這兩個字串并保留舊字串嗎?我很困惑。
import xml.etree.ElementTree as ET
Rom2 = input('Number: ')
sq = input('SQ: ')
input_file = "Rom1.xml"
output_file = Rom2 ".xml"
with open(input_file) as f:
xml_content = f.readlines()
with open(output_file, 'w ') as f:
for line in xml_content:
f.write(line.replace('Rom1', Rom2))
f.write(line.replace('SQ4XXX', sq))
uj5u.com熱心網友回復:
好的,我得到了它想要的作業,感謝您的幫助!
下面是最終代碼:
import xml.etree.ElementTree as ET
Rom2 = input('Number: ')
sq4 = input('SQ4: ')
sq5 = input('SQ5: ')
input_file = "Rom1.xml"
output_file = Rom2 ".xml"
with open(input_file) as f:
xml_content = f.readlines()
with open(output_file, 'w ') as f:
for line in xml_content:
f.write(line.replace('Rom1', Rom2))
with open(output_file, encoding='utf-8', mode='r ') as xml:
content = xml.read().replace('SQ4XXX', sq4)
xml.seek(0)
xml.write(content)
xml.truncate()
with open(output_file, encoding='utf-8', mode='r ') as xml:
content = xml.read().replace('SQ5XXX', sq5)
xml.seek(0)
xml.write(content)
xml.truncate()er code here
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/521265.html
