使用Python替换文件中的单词时出现问题

2024-09-30 18:13:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含如下数据的.txt文件:

1,Rent1,Expense,16/02/2010,1,4000,4000  
1,Car Loan1,Expense,16/02/2010,2,4500,9000  
1,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 

我想替换第一项。如果它是1,意味着它应该保持不变,但是如果它是0,意味着我想把它改成1。因此,我尝试使用以下代码:

^{pr2}$

但成功执行程序后,my.txt文件如下所示:

1,Rent1,Expense,16/02/2010,1,4000,4000

1,Car Loan1,Expense,16/02/2010,2,4500,9000

1,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

现在我要删除空行。是否有可能,或者是否有其他方法来替换0?在


Tags: 文件数据代码txtmycarflatexpense
3条回答
import fileinput
import re
p = re.compile(r'^0,')
for line in fileinput.FileInput("sample.txt",inplace=1):
    print p.sub('1,', line.strip())

您现有的代码实际上并没有像您所希望的那样更改行;print a如果a没有实际定义,print a不会做任何事情!因此,您只打印一个空行(即print a位),然后打印现有的行,因此为什么您得到一个除了添加一些空行之外没有更改的文件。在

print在输入后添加一个额外的换行符,并且已经有一个换行符。您应该去掉现有的换行符(line.rstrip("\n")),或者改用sys.stdout.write()。在

在打印之前,请使用rstrip删除后面的新行,或者使用sys.stdout.write代替print。在

另外,如果只需要修改第一个元素,则不需要拆分整条线并再次连接它。只需在第一个逗号上拆分:

line.split(',', 1)

如果您想要更好的性能,您也可以直接测试line[0]的值。在

相关问题 更多 >