【发布时间】:2014-05-21 21:11:55
【问题描述】:
我正在尝试使用某些标准清理文本文件。
我的文字是这样显示的
NHIST_0003 (ZS.MC.BGE.0424SPVCOS) (21.12) 14.08
(ZS.MC.BLK.0424SPVCOS) (21.12) 14.08
(ZS.MC.GRY.0424SPVCOS) (21.12) 14.08
(ZS.MC.BLK.0525SPVCOS3) (21.12) 14.08
(ZS.MC.GRY.0525SPVCOS2) (21.12) 14.08
NHIST_0004 (ZS.MC.BGE.0424SPVCOS) (21.12) 14.08
如果该行之前有任何文本,我需要删除第一个“(”括号之前的任何文本,并删除我要保留的文本的括号。我还需要删除带括号的数字里面。看着第一行,我只想保留
ZS.MC.BGE.0424SPVC0S 14.08
这些是我想出的试图把事情联系起来的代码。我宁愿不使用 re 表达式,因为现阶段对我来说太先进了。
fileName='reach.txt'
fileName2='outreach.txt'
while True:
f=open(fileName,'r')
for words in f:
x=words.split('(', 1)[-1]
g = open(fileName2,'w')
g.write(x)
g.close()
这个循环是无限的。我认为通过关闭文件,我是在告诉系统停止处理行。
【问题讨论】:
-
with open(file, 'r') as fh: for row in fh: row[:row.find('(')]或者只是做row.split()并拿走你想要的东西。例如x = row.split()和x[1], x[3] -
但是即使文本文件的格式始终不同,x = row.split() 和 x[1], x[3] 也会起作用吗?
-
它没有,所以我重新编写了代码以找到
(...),然后取出行中的最后一项,因为这似乎是一致的。 -
尝试了我的最新编辑,结果与您的“我想要这个结果”相符:)