繁体   English   中英

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

[英]Replace string in first 3 lines of a file

我有一个与此类似的文件:

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

关于仅替换前三个的任何建议,或者关于line.replace为什么不尊重前三个的建议?

谢谢。

该程序可能会执行您想要的操作:

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操作隐式添加。

你在打电话

line.replace('B','x',3)

在for循环中,这意味着您要在每行中最多替换3个B。 (整个文件中没有3B。)

要执行您喜欢的操作(在Python中),您可以为每次读取的行增加一个计数器,并且仅在您的计数器小于3时才进行替换(如果从1开始对行进行编号,则为4)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM