我有一个如下文件:
# exchange 1
1 -1.00 0.00 -52602.05 277.00 277.00 0.00 -1
2 1.00 0.00 -52557.77 279.00 281.00 2.00 -1
3 1.00 0.00 -52578.18 281.00 279.00 0.00 -1
# exchange 2
1 1.00 279.71 -52651.48 277.00 279.00 1.00 -1
2 -1.00 282.11 -52551.07 281.00 281.00 0.00 -1
3 1.00 274.73 -52507.33 279.00 277.00 1.00 -1
...
# exchange 161
1 -1.00 310.63 -50702.48 313.00 313.00 0.48 -1
2 -1.00 294.27 -51919.85 291.00 291.00 0.36 -1
我想在模式“#exchange”的行的第三个值上添加一个常量(例如10),以便:
# exchange 1
将成为:
# exchange 11
在整个文件中保存更改,并将更改保存在原始文件中。
我想出了一些方法来进行更改,但是我不知道如何保存更改。
data_1 = open(sys.argv[1], 'r')
lines_1 = data_1.readlines()
data_1.close()
for line in lines_1:
p = line.split()
if p[0] == "#" and p[1] == "exchange":
a = int(p[2])
print('p',int(p[2]))
a += 100
p.insert(2,a)
print('p now',p[2])
答案 0 :(得分:1)
您可以使用re
模块(re.sub
)将行替换为# exchange <number>
。
例如(file.txt
包含问题中的文字):
import re
CONSTANT = 10
with open('file.txt', 'r') as f_in:
for line in f_in:
line = re.sub(r'^(#\s+exchange\s+)(\d+)', lambda g: g.group(1) + str(int(g.group(2))+CONSTANT), line)
# print the line
print(line, end='')
打印:
# exchange 11
1 -1.00 0.00 -52602.05 277.00 277.00 0.00 -1
2 1.00 0.00 -52557.77 279.00 281.00 2.00 -1
3 1.00 0.00 -52578.18 281.00 279.00 0.00 -1
# exchange 12
1 1.00 279.71 -52651.48 277.00 279.00 1.00 -1
2 -1.00 282.11 -52551.07 281.00 281.00 0.00 -1
3 1.00 274.73 -52507.33 279.00 277.00 1.00 -1
...
# exchange 171
1 -1.00 310.63 -50702.48 313.00 313.00 0.48 -1
2 -1.00 294.27 -51919.85 291.00 291.00 0.36 -1