我有一个类似的文件:
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的任何建议?
谢谢。
答案 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次。)