簡體   English   中英

搜索包含一些文本的行,替換完整行python

[英]Search for a line that contains some text, replace complete line python

因此,我嘗試搜索某個特定的字符串,例如:process.control.timeout = 30,但30可以是任何字符串。 我嘗試了這個:

for line in process:
    line = line.replace("process.control.timeout", "process.control.timeout=900")
    outFile.write(line)

但這會帶我回去process.control.timeout = 900 = 30。 我覺得我需要將正則表達式與通配符一起使用? 但是我對python很陌生。

沒有正則表達式:

for line in process:
    if "process.control.timeout" in line:
        # You need to include a newline if you're replacing the whole line
        line = "process.control.timeout=900\n" 
    outFile.write(line)

要么

outFile.writelines("process.control.timeout=900\n" 
                      if "process.control.timeout" in line else line 
                         for line in process)

如果您要匹配的文本在行的開頭,請在line中使用line.startswith("process.control.timeout")而不是"process.control.timeout" in line

您是對的,正則表達式是解決之道。

import re
pattern = re.compile(r"process\.control\.timeout=\d+")
for line in process:
    line = pattern.sub("process.control.timeout=900", line)
    outFile.write(line)

這可能是您想要的(匹配==后的數字是可選的)。 在循環搜索和替換時,單獨編譯regex比直接使用re.sub更有效。

import re

pattern = re.compile(r'process\.control\.timeout(=\d+)?')

for line in process:
    pattern.sub('process.control.timeout=900', line)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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