我是PYTHON的初学者,对正则表达式毫无用处,并且正在努力用新数字替换文件中的未知数字。我已经通过python查看了如何使用tos和示例,但仍无法在如何创建表达式方面取得任何进展。
# myfile.txt
Some text
More text
Option "BlankTime" "15"
more text
我想用另一个数字替换“15”,这行只在文件中出现一次,但它所在的行号是未知的,15的值也是未知的,可以是报价中包含的任何数字标记。
最好的方法是使用python(re ??)但是如果不能这样做那么可能是sed ??
答案 0 :(得分:1)
听起来你正在寻找一个特定的参数(BlankTime
)。这可以通过以下sed
单行完成:
cat myfile.txt | sed 's/\("BlankTime"\s*"\)[^"]*/\1987/'
这将搜索"BlankTime"
并将其值替换为987
,保留所有其他行。
编辑要替换文件内容,请使用以下两步法:
cat myfile.txt | sed 's/\("BlankTime"\s*"\)[^"]*/\1987/' > myfile.txt.tmp
mv myfile.txt.tmp myfile.txt
答案 1 :(得分:0)
import re
with open("myfile.txt", "r") as myfile:
mytext = myfile.read()
pattern = re.compile(r'^(Option\s+"BlankTime"\s+")(\d+)"', re.MULTILINE)
mystr = pattern.sub(r'\1REPLACED"', mytext)
with open("myfile.txt", "w") as myfile:
myfile.write(mytext)
这将立即替换文件中的所有实例。我已经将数字用于捕获括号,以防你在替换之前想要用它做什么。
答案 2 :(得分:-1)
myfile = open('myfile.txt', 'r')
text = myfile.read()
myfile.close()
print re.sub(r'\d+', '42', text)
\d
匹配一个数字,+
至少匹配前一个模式的一次。