刚接触Python,找不到这个问题的答案。 我有一个与此类似的文件:
@BNNDSIJHF
ABCDABCDAB
&
*&ABDA&
一个对象有四行数据。文件中有 1000 个对象,因此文件中有 4* 个对象。 我需要将所有 B 替换为 X,但仅限于每个对象的第 2 行。 例如。
@BNNDSIJHF
AXCDAXCDAX
&
*&ABDA&
即使对象的最后一行有 B,它们也不会被替换。 这是我尝试过的:
import sys
import os
def open_and_replace(filename):
with open(filename) as read_file:
temp = open("/tmp/temp.txt","w")
for index,line in enumerate(read_file,1):
if index == 2:
temp.write(line.replace('B', 'X'))
index=index+4
else:
temp.write(line.strip() + "\n")
temp.close()
os.rename("/tmp/temp.txt",filename)
for file_name in sys.argv[1:]:
open_and_replace(file_name)
这将替换文件中第 2 行之后的所有 B。 任何帮助将不胜感激!
最佳答案
IIUC,如果您有一个没有空格的行列表
[x for x in f.readlines() if x.strip()]
比如
['@BNNDSIJHF',
'ABCDABCDAB',
'&',
'*&ABDA&&#',
'@BNNDSIJHF',
'ABCDABCDAB',
'&',
'*&ABDA&&#']
您可以只使用从第二行开始的 for 循环,步长为 4,这是每个对象的固定长度。
for i in range(1, len(ll), 4):
ll[i] = ll[i].replace('B', 'X')
然后只需'\n'.join
将其保存回文件
关于Python:从文件中读取特定行并替换这些行上的特定字符并保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51689247/