替换文件的前3行中的字符串

时间:2017-07-25 01:24:59

标签: python replace

我有一个类似的文件:

This is a letter B
This is a letter B
This is a letter B
This is a letter B
This is a letter B
This is a letter B

使用python,我想用X替换前3行。例如:

This is a letter X
This is a letter X
This is a letter X
This is a letter B
This is a letter B
This is a letter B

我正在使用的代码改变了每一行:

for line in fileinput.FileInput(File,inplace=1):
        line = line.replace('B','x',3)
        print line

有关替换前3个或者为什么line.replace不遵守3的任何建议?

谢谢。

2 个答案:

答案 0 :(得分:1)

这个程序可能会做你想要的:

import fileinput
File = 'bbb.txt'

for line in fileinput.input([File], inplace=1):
    if fileinput.filelineno() <= 3:
        line = line.replace('B', 'x')
    print line.rstrip('\n')

请注意使用fileinput.input()代替fileinput.FileInput().input()调用会建立全局状态,包括调用.filelineno()的能力。

请注意使用fileinput.filelineno()来确定行号。该计划在前三行进行替换。

请注意使用.rstrip('\n')删除原始换行符。 print操作将隐式添加换行符。

答案 1 :(得分:0)

您正在致电

line.replace('B','x',3)
在for循环中,

意味着你要在每行中替换最多3个B. (整个文件中不是3 B。)

为了做你喜欢的事(在Python中),你可以为每一行读取增加一个计数器,如果你的计数器小于3,则只进行替换(如果你从1开始编号,则只进行4次。)