簡體   English   中英

Python-寫文件文本的有效方法嗎?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM