Python:从文件中读取特定行并替换这些行上的特定字符并保存文件

标签 python loops iteration

刚接触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/

相关文章:

iteration - 在 Dart 中获取集合/列表中数字总和的最简洁方法是什么?

python3 只有一个目录被导入到命名空间包中

python - 递归选择排序以返回python中的降序列表

python - 在 Python 中从字符串中去除数字

python -m : Error while finding module specification

JavaScript:将更改参数传递给回调

javascript - 绘制多个 HTML canvas 只绘制最后一个?

c - 简单的字符串递归

Java 通过迭代 (N) 个对象来比较字段

python - 在 Python 中遍历一系列日期