基于Criteri的多行文件连接记录

2024-09-30 14:19:14 发布

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

我正在尝试编写一个python脚本

像这样记录数据

6xxxxxxxx
7xxxxxxxx
6xxxxxxxx
7xxxxxxxx
7xxxxxxxx
6xxxxxxxx
6xxxxxxxx
6xxxxxxxx
7xxxxxxxx
7xxxxxxxx
7xxxxxxxx

并执行以下逻辑

^{pr2}$

所以应该打印成这样:

6xxxxxx 7xxxxxxxx
6xxxxxx 7xxxxxxxx 7xxxxxxx 7xxxxxxx
6xxxxxx
6xxxxxx
etc..

这是我的代码:

han1 = open("file","r")

newline = ""
for i in han1:
        if i[0] == "6" and newline == "":
                newline = i
        elif i[0] == "7":
                newline = newline + i
        elif i[0] == "6" and newline != "":
                print newline
                newline = ""
                newline = i


han1.close()

当我运行脚本时,输出看起来没有变化。你觉得我哪里错了。是因为newline变量不会在循环的迭代之间存储值吗?如有任何指导,我们将不胜感激。在


Tags: and数据代码in脚本for记录newline
3条回答

如果文件不是以GB为单位

data=open("file").read().split()
a = [n for n,l in enumerate(data) if l.startswith("6") ]        
for i,j in enumerate(a):
    if i+1 == len(a):
        r=data[a[i]:]
    else:
        r=data[a[i]:a[i+1]]
    print ' '.join(r)

if语句中没有任何分支以newline设置为“”结束。因此,第一个分支永远不会求值,因为newline永远不是“”,除了第一个情况。在

您可以通过简单地为以6开头的记录追加一个换行符来简化这一过程,如果没有,就不追加一个

for line in open('infile'):
  if line[0] == '6':
    print ''
  print line.strip() ,

好的,这将首先在文件中创建一个空行,并且可能不会以新行结束文件。不过,这很容易解决。在

或者是一个没有这个问题的解决方案,而且更接近您的解决方案:

^{pr2}$

但也有点长。在

也就是说,我认为你的主要问题是你没有删除记录,所以你保留了换行。在

相关问题 更多 >