Python 对文件进行更改并将其写回?

Python 对文件进行更改并将其写回?,python,replace,Python,Replace,我有一个如下所示的文件: #交换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 #交易所2 1 1.00 2

我有一个如下所示的文件:

#交换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
#交易所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
...
#交易所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      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])

您可以使用
re
模块(
re.sub
)将行替换为
#exchange

例如(
file.txt
包含问题的文本):

印刷品:

# 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
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