【发布时间】:2009-12-17 19:34:12
【问题描述】:
我必须从文件中读取,对于分隔符之间的每个数据,我需要删除空格,并且我在 jython 中编写了以下程序
当我尝试重写时,它会在源文件的末尾进行重写。
filesrc = open('c:/FILE/split_doc.txt','r+')
for list in filesrc.readlines():
#split the records by the delimiter
fields = list.split(',')
list = ",".join([s.strip() for s in fields])
filesrc.writelines(list+"\n")
filesrc.close()
所以我做了一些修改并添加了 file.seek,这样我就可以在源代码行上重写,它在一定程度上起作用,除了它在末尾添加了两行额外的行,这意味着查找部分存在问题。
修改后的程序是
filesrc = open('c:/ODI_FILE/split_doc.txt','r+')
lines=0
for list in filesrc.readlines():
#split the records by the delimiter
fields = list.split(',')
list = ",".join([s.strip() for s in fields])
filesrc.seek(lines)
filesrc.writelines(list+"\n")
lines += len(list+"\n")
filesrc.close()
请帮助我正确的逻辑。
带有多余空格的正确源文件
52 ,William ,Kudo ,28/03/199300:00:00
11,Andrew, Andersen,22/02/199900:00:00
12,John ,Galagers,20/04/200000:00:00
13,Jeffrey ,Jeferson,10/06/198800:00:00
20,Jennie,Daumesnil,28/02/198800:00:00
21,Steve,Barrot,24/09/199200:00:00
22,Mary,Carlin,14/03/199500:00:00
30,Paul,Moore,11/03/199900:00:00
这是我的错误输出
52,William,Kudo,28/03/199300:00:00
11,Andrew,Andersen,22/02/199900:00:00
12,John,Galagers,20/04/200000:00:00
13,Jeffrey,Jeferson,10/06/198800:00:00
20,Jennie,Daumesnil,28/02/198800:00:00
21,Steve,Barrot,24/09/199200:00:00
22,Mary,Carlin,14/03/199500:00:00
30,Paul,Moore,11/03/199900:00:00
9500:00:00
30,Paul,Moore,11/03/199900:00:00
这里最后两行不应该出现
请建议所需且更快的方法,因为这是一个示例文件,我必须让该程序适用于数百万行。
有没有办法让这个逻辑也适用于 while 循环?
【问题讨论】:
-
尽量避免使用像“list”这样的变量名,因为它们会影响内置类型。在这种情况下,它无论如何都不是一个列表。我会使用“for line in...”,因为它正确地反映了内容。
标签: python file rewrite jython