繁体   English   中英

python字符串替换未知数

[英]python string replace unknown number

我是PYTHON的初学者,而对regex没用,并且正在努力用新数字替换文件中的未知数字。 我已经通过python查看了如何使用tos和re的示例,但在如何创建表达式方面仍然没有任何进展。

# myfile.txt
Some text
More text
Option  "BlankTime" "15"
more text

我想用另一个数字替换“ 15”,该行在文件中仅出现一次,但是它所在的行号是未知的,并且15的值也是未知的,并且可以是引号中包含的任何数字。

最好的方法是用python(re ??)来做,但是如果不能做到这一点,那就可以sed ??。

听起来您在寻找特定的参数( 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
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)

这将立即替换文件中的所有匹配项。 我将数字放在捕获括号的情况下,以防您想在替换前对其进行处理。

myfile = open('myfile.txt', 'r')
text = myfile.read()
myfile.close()

print re.sub(r'\d+', '42', text)

\\d匹配一个数字, +匹配至少一个前面的模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM