我已经用Python编写了一个遍历文件的代码,提取所有数字,并将它们加起来。现在,我必须在文件的特定位置写入“总计”(整数)somethingsomething something...Total: __00__ something something。
somethingsomething something...Total: __00__ something something
我必须将精确计算的总数写在该Total: __部分的后面,这意味着结果行将变为,例如:something somethingsomething...Total: __35__ something something。
Total: __
something somethingsomething...Total: __35__ something something
到目前为止,我在写部分中有以下内容:
import re f1 = open("filename.txt", 'r+') for line in f1: if '__' in line and 'Total:' in line: location = re.search(r'__', line) print(location)
打印输出: <_sre.SRE_Match object; span=(21, 23), match='__'>
<_sre.SRE_Match object; span=(21, 23), match='__'>
因此它在21到23的位置找到了“ __”,这意味着我想在24位置插入总数。我知道我必须以某种方式使用此seek()方法。但是我已经尝试过几次并且失败了。任何建议,将不胜感激。
seek()
重要说明: 文件的原始内容应保留原样。只有总的变化-没有别的。
如果文件不是特别大,则可以将其内容以字符串(或行列表)的形式读取到内存中,进行替换,然后将内容写回。像这样:
total = 'Total: __{}__'.format(12345) with open(filename, 'r+') as f: contents = f.read().replace('Total: __00__', total) f.seek(0) f.truncate() f.write(contents)