搜索包含某些文本的行,替换整行 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还不太熟悉。
3 个回答
0
这可能就是你想要的(匹配=
和=
后面的数字是可选的)。因为你是在一个循环中进行查找和替换,所以单独编译正则表达式会比直接使用re.sub
更有效率。
import re
pattern = re.compile(r'process\.control\.timeout(=\d+)?')
for line in process:
pattern.sub('process.control.timeout=900', line)
1
你说得对,正则表达式(regex)是解决这个问题的好方法。
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)
4
不使用正则表达式:
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.startswith("process.control.timeout")
来代替 "process.control.timeout" in line
。