2015-11-03 123 views
1

我生成一个文件文本,你可以看到下面,我试图压制这个文件的最后一个字符“,”生成后,但我不能...Python - 删除文本文件中的最后一个字符

*Nset, nset 
0570, 0571, 0572, 0573, 0574, 0575, 0576, 0577, 0578, 0579, 0579 
0580, 0581, 0582, 0583, 0584, 0585, 0586, 0587, 0588, 0589, 0589 
0590, 0591, 

我已经在堆栈中发现这样的代码,但是,它不工作...

import sys 
with open(sys.argv[1]) as f, open('out.txt', 'w') as out: 
    for line in f: 
     out.write(line.split()[-1]+'\n') 

----编辑LATER ----

我的代码生成文件文字:

fichier_write.write("*Nset,") 
fichier_write.write("\n") 
compt = 0 
for i in range(0,node_label.size): 
    if Eleme_CI[i]!=0: 
     fichier_write.write("%.4i, "%(Eleme_CI[i])), 
     compt = compt + 1 
    if compt == 10: 
     fichier_write.write("%.4i"%(Eleme_CI[i])), 
     fichier_write.write("\n") 
     compt = 0 

fichier_write.close() 
+0

试试这个正则表达式:'/([,])$ /' – Onilol

+1

向我们展示您用于生成线条的代码。 –

+0

我在哪里可以试试?对不起,我是新手,在文本文件上工作... – user3601754

回答

2
import re 
# get text into a string \Z is the end of a string in regex 
with open('data') as f: 
    text = f.read() 

text = re.sub(r'.\Z',r'',text) 

print(text) 

Money amount left 39.0 
*Nset, nset 
0570, 0571, 0572, 0573, 0574, 0575, 0576, 0577, 0578, 0579, 0579 
0580, 0581, 0582, 0583, 0584, 0585, 0586, 0587, 0588, 0589, 0589 
0590, 0591 
1

当你产生输出试试这个:

for i in range(0,node_label.size): 
    if compt == 10 or i == node_label.size: 
     fichier_write.write("%.4i"%(Eleme_CI[i])), 
     fichier_write.write("\n") 
     compt = 0 
    if Eleme_CI[i]!=0: 
     fichier_write.write("%.4i, "%(Eleme_CI[i])), 
     compt = compt + 1 

我加了一下,第二if语句和我交换的顺序。如果这是连续的第10个数字,或者它是最后一个数字,则不要打印“,”。我切换了订单,以便首先检查。

相关问题