Python 删除txt文件中某些行中的结束/尾随逗号

Python 删除txt文件中某些行中的结束/尾随逗号,python,string,Python,String,我已经在这个网站上尝试和搜索了,但是我找不到一个适合我的问题的好的解决方案。 我有一个很大的txt文件。在txt文件中,有些行以,(逗号)结尾。我想去掉结尾的逗号 我的示例文件: TYPE,4.0, ID,ZBC173, ROW1,51.977, ROW2,0, ROW3,0, ROW4,2, 81.00,-4.42,1.0 114.00,-1.67,1.0 ROW7,0, ROW8,3.696, ROW9,7, 113.9996969,-1.67,0.7 121.500409,0,0.7 12

我已经在这个网站上尝试和搜索了,但是我找不到一个适合我的问题的好的解决方案。 我有一个很大的txt文件。在txt文件中,有些行以
(逗号)结尾。我想去掉结尾的逗号

我的示例文件:

TYPE,4.0,
ID,ZBC173,
ROW1,51.977,
ROW2,0,
ROW3,0,
ROW4,2,
81.00,-4.42,1.0
114.00,-1.67,1.0
ROW7,0,
ROW8,3.696,
ROW9,7,
113.9996969,-1.67,0.7
121.500409,0,0.7
127.9995187,0.066,0.9
129.4998186,0.285,0.9
134.4992436,1.779,1.0
145.9999685,2.144,1.0
153.2586833,3.696,1.0
我的代码:

import os
file=open(r'C:\Users\ZBC173.txt','r')
target=open(r'C:\Users\ZBC173_no_comma.csv','w')
states = [line.strip().split(':')[-1] for line in file.readlines()]
target.write('\n'.join(states))
target.close()
我的输出:

TYPE,4.0
ID,ZBC173
ROW1,51.977
ROW2,0
ROW3,0
ROW4,2
81.00,-4.42
114.00,-1.67
ROW7,0
ROW8,3.696
ROW9,7
113.9996969,-1.67
121.500409,0
127.9995187,0.066
129.4998186,0.285
134.4992436,1.779
145.9999685,2.144
153.2586833,3.696
在我的输出中,我丢失了一些数据。我怎样才能避免这种情况?谢谢你的支持。我是python代码的初学者。

使用内置函数:

file=open(r'C:\Users\ZBC173.txt','r')
target=open(r'C:\Users\ZBC173_no_comma.csv','w')
for line in file:
    target.write(line[:-1].rstrip(',') + "\n")

file.close()
target.close()
使用内置功能:

file=open(r'C:\Users\ZBC173.txt','r')
target=open(r'C:\Users\ZBC173_no_comma.csv','w')
for line in file:
    target.write(line[:-1].rstrip(',') + "\n")

file.close()
target.close()

您可以使用此上下文管理器:

with open(r'C:\Users\ZBC173.txt','r') as file,open(r'C:\Users\ZBC173_no_comma.csv','w') as target:
    target.write(file.read().replace(',\n','\n'))

如果要将文件夹中的所有文本文件存储到不同的csv文件中:

from glob import glob

for f in glob("*.txt"):
    with open(f,'r') as file,open(f"C:\\Users\\Folder\\{f.replace('.txt','.csv')}",'w') as target:
        target.write(file.read().replace(',\n','\n'))

您可以使用此上下文管理器:

with open(r'C:\Users\ZBC173.txt','r') as file,open(r'C:\Users\ZBC173_no_comma.csv','w') as target:
    target.write(file.read().replace(',\n','\n'))

如果要将文件夹中的所有文本文件存储到不同的csv文件中:

from glob import glob

for f in glob("*.txt"):
    with open(f,'r') as file,open(f"C:\\Users\\Folder\\{f.replace('.txt','.csv')}",'w') as target:
        target.write(file.read().replace(',\n','\n'))

谢谢你的回复。我试过你的代码输出保持不变。没什么变化。哦,你说得对。这是因为每一行都以
“\n”
字符结尾。因此,剥离时不应将其包括在内。我编辑了我的答案,现在应该可以了。谢谢你的回复。我试过你的代码输出保持不变。没什么变化。哦,你说得对。这是因为每一行都以
“\n”
字符结尾。因此,剥离时不应将其包括在内。我编辑了我的答案,现在应该可以用了。@Ann Zen,超级。你的代码运行良好。如果我想更改文件夹中的所有文件并写入另一个文件夹,如何应用您的代码?谢谢您的回答。例如我在folder1
file1.txt
file2.txt
file3.txt
等中,我需要
file1.csv
file2.csv
file3.csv
等,在folder2中,我为我方的错误沟通感到抱歉。我希望你能理解我。再次感谢@Ann Zen,谢谢你。我将尝试代码并让您知道。我不在我的电脑附近。我刚试过使用你的代码,但得到了以下错误
,以open(file,'r')作为文件,open(file.replace('txt','.csv'),'w')作为目标:
属性错误:'file'对象没有属性'replace'
你能检查一下吗?当然,我已经做了。谢谢你,祝你过得愉快。@Ann Zen,太好了。你的代码运行良好。如果我想更改文件夹中的所有文件并写入另一个文件夹,如何应用您的代码?谢谢您的回答。例如我在folder1
file1.txt
file2.txt
file3.txt
等中,我需要
file1.csv
file2.csv
file3.csv
等,在folder2中,我为我方的错误沟通感到抱歉。我希望你能理解我。再次感谢@Ann Zen,谢谢你。我将尝试代码并让您知道。我不在我的电脑附近。我刚试过使用你的代码,但得到了以下错误
,以open(file,'r')作为文件,open(file.replace('txt','.csv'),'w')作为目标:
属性错误:'file'对象没有属性'replace'
你能检查一下吗?当然,我已经做了。谢谢你,祝你今天愉快。