python字符串替换未知数字

时间:2011-10-06 09:55:09

标签: python

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

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

我想用另一个数字替换“15”,这行只在文件中出现一次,但它所在的行号是未知的,15的值也是未知的,可以是报价中包含的任何数字标记。

最好的方法是使用python(re ??)但是如果不能这样做那么可能是sed ??

3 个答案:

答案 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匹配一个数字,+至少匹配前一个模式的一次。