Python 基于条件连接多行文件上的记录
我正在尝试编写一个python脚本 这需要像这样的记录数据Python 基于条件连接多行文件上的记录,python,file-io,Python,File Io,我正在尝试编写一个python脚本 这需要像这样的记录数据 6xxxxxxxx 7xxxxxxxx 6xxxxxxxx 7xxxxxxxx 7xxxxxxxx 6xxxxxxxx 6xxxxxxxx 6xxxxxxxx 7xxxxxxxx 7xxxxxxxx 7xxxxxxxx 并执行以下逻辑 newline = "" read in a record if the record starts with a 6 and newline = '' newline = re
6xxxxxxxx
7xxxxxxxx
6xxxxxxxx
7xxxxxxxx
7xxxxxxxx
6xxxxxxxx
6xxxxxxxx
6xxxxxxxx
7xxxxxxxx
7xxxxxxxx
7xxxxxxxx
并执行以下逻辑
newline = ""
read in a record
if the record starts with a 6 and newline = ''
newline = record
if the records starts with a 7
newline = newline + record
if the record starts with a 6 and newline != ''
print newline
newline = record
所以它应该像这样打印出来:
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()
当我运行我的脚本时,输出看起来没有改变。你认为我哪里做错了。是因为换行变量不会在循环的迭代之间存储值吗?任何指导都将不胜感激。您的if语句中没有一个分支以
换行设置为“”结束。因此,第一个分支将永远不会求值,因为除了第一种情况外,换行
永远不会是“”。您可以通过简单地为以6开头的记录追加一个换行,而如果不是,则不追加一个
for line in open('infile'):
if line[0] == '6':
print ''
print line.strip() ,
好的,这将在文件中首先创建一个空行,并且可能不会以换行符结束文件。不过,这很容易解决
或者是一个不存在该问题且更接近您的解决方案:
newline = ''
for line in open('infile'):
if line[0] == '6':
if newline:
print newline
newline = ''
newline += ' ' + line.strip()
if newline:
print newline
也可以,但是稍微长一点
也就是说,我认为您的主要问题是您没有剥离记录,因此保留换行符。如果您的文件不是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)