我试图在不影响其他行的情况下更改文本文件中的某些行。这是名为“text.txt”的文本文件中的内容
this is a test1|number1
this is a test2|number2
this is a test3|number2
this is a test4|number3
this is a test5|number3
this is a test6|number4
this is a test7|number5
this is a test8|number5
this is a test9|number5
this is a test10|number5
我的目标是更改第 4 行和第 5 行,但保持其余部分不变。
mylist1=[]
for lines in open('test','r'):
a=lines.split('|')
b=a[1].strip()
if b== 'number3':
mylist1.append('{}|{} \n'.format('this is replacement','number7'))
else:
mylist1.append('{}|{} \n'.format(a[0],a[1].strip()))
myfile=open('test','w')
myfile.writelines(mylist1)
即使代码有效,我想知道是否有更好、更有效的方法来做到这一点?是否可以仅通过行号读取文件?
请您参考如下方法:
您可以改进的地方不多。但是你必须将所有行写入一个新文件,无论是更改还是未更改。小的改进是:
- 使用
with语句; - 避免在列表中存储行;
- 在
else子句(如果适用)中编写不带格式的行。
应用以上所有内容:
import shutil
with open('test') as old, open('newtest', 'w') as new:
for line in old:
if line.rsplit('|', 1)[-1].strip() == 'number3':
new.write('this is replacement|number7\n')
else:
new.write(line)
shutil.move('newtest', 'test')
