[英]Python - efficient way to write to a file text?
我正在寫一個文本文件,但是沒有按預期工作。
這是我所擁有的:
#!/usr/lib/env python
import re
file = open("address.txt","r")
content = file.read()
file.close()
content = content.split('LAN ')[1:]
dic = {}
for lan in content:
dic[int(lan[0])] = lan[1:]
def address(lan_index):
address = re.findall('address\s(.*?)\s',dic[lan_index] )
if len(address) > 0:
print 'LAN', lan_index, ":", address[0]
else:
print 'No Address Found!'
return address[0]
ad1 = str(address(1))
new_ad = ad1
var1 = 'ad1'
filedata = None
with open('address.txt', 'r') as file :
filedata = file.read()
filedata = filedata.replace(ad1 , var1)
with open('address.txt', 'w') as file:
file.write(filedata)
這是我的文本文件:
#line addresses LAN 1
address 192.168.6.6
network 192.168.6.6
我的問題是,當我想將ad1
替換為var1
它不會僅替換我的address
,只會替換network
以及它們具有相同的IP。
我的輸出是這樣的:
地址ad1
網絡廣告1
有沒有一種有效且可能的方法來避免這種情況並得到類似的結果:
地址ad1
網絡192.168.6.6
如果可以的話,我將不勝感激。 謝謝
因為filedata.replace(ad1 , var1)
貪婪filedata.replace(ad1 , var1)
所以您的兩個地址都將被替換。 您可以通過給它一個可選的第三個參數來限制它: filedata.replace(ad1 , var1, 1)
告訴它最多進行1
替換,或者您可以擴展捕獲組: '(address\\s.*?)\\s'
包含“地址”,並使var1 = "address ad1"
以便filedata.replace
僅查找其中包含“地址”的行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.