[英]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.