替换文件中的整行
我有一个.txt文件,里面的数据是这样的:
0,Rent1,Expense,16/02/2010,1,4000,4000
0,Car Loan1,Expense,16/02/2010,2,4500,9000
0,Flat Loan1,Expense,16/02/2010,2,4000,8000
0,Rent2,Expense,16/02/2010,1,4000,4000
0,Car Loan2,Expense,16/02/2010,2,4500,9000
0,Flat Loan2,Expense,16/02/2010,2,4000,8000
现在我想把第4行替换成新的内容,比如:
0,Loan,Expense,19/02/2010,2,5000,10000
我使用了以下代码:
newline='0,Loan,Expense,19/02/2010,2,5000,10000'
lnum=1
for line in fileinput.FileInput("sample.txt",inplace=1):
if lnum=='4':
result = newline
lnum=lnum+1
else:
result=line
lnum=lnum+1
sys.stdout.write(result)
但是文件里显示的是:
0,Rent1,Expense,16/02/2010,1,4000,4000
0,Car Loan1,Expense,16/02/2010,2,4500,9000
0,Flat Loan1,Expense,16/02/2010,2,4000,8000
0,Loan,Expense,19/02/2010,2,5000,100000,Car Loan2,Expense,16/02/2010,2,4500,9000
0,Flat Loan2,Expense,16/02/2010,2,4000,8000
我该怎么解决这个问题呢?
4 个回答
1
使用enumerate:代码更少,出错的可能性也更小
newline = '0,Loan,Expense,19/02/2010,2,5000,10000\n'
for lnum, line in enumerate(fileinput.FileInput("sample.txt",inplace=1)):
if lnum == 4:
line = newline
sys.stdout.write(line)
2
添加一个新行
newline='0,Loan,Expense,19/02/2010,2,5000,10000'
lnum=1
for line in fileinput.FileInput("sample.txt",inplace=1):
if lnum==4:
result = newline+"\n"
else:
result=line
lnum=lnum+1
sys.stdout.write(result)
或者你可以直接声明一个 newline
变量,像这样
newline="0,Loan,Expense,19/02/2010,2,5000,10000\n"
0
把下面的内容替换掉:
result = newline #you lose the newline here
换成:
result = newline + '\n' #or '\r\n' depending on your newline format.