我是Python处理文本文件的新手。我有一个巨大的文本文件(200万行)a.txt,看起来像这样:
1 0
34715 0 1 8 0 29 5 5 11 4 8 4 150 0 1
0
2200859 1 4 8 1 18 5 5 10 189 8 4 309 0 4
0
749279 1 1 5 4 38 5 5 0 157 8 4 370 0 2106576 1 1 5 4 38 5 5 1 157 6 18 370 0 2140134 1 1 5 4 38 5 5 1 157 6 13 370 0 2140408 0 1 5 4 38 5 5 1 157 6 16 370 0 1
0
1149510 0 5 8 2 19 5 2 1 111 5 4 388 0 2
0
471429 0 1 6 0 29 5 5 11 4 8 18 414 0 2629646 0 1 6 0 29 5 5 11 4 8 4 414 0 1
0
48249 0 1 8 0 30 5 5 1 115 0 6 458 0 3
0
1515836 0 0 8 2 7 5 3 1 163 2 4 522 0 1516727 0 0 8 2 7 5 3 1 163 2 4 522 0 1516995 0 0 8 2 7 5 3 1 163 2 4 522 0
第一行包含0 1
第二行包含15个数字,从34715,0,...,1
第三行仅包含一个数字0
第四行又包含15个数字
第五行再次只包含一个数字0
第六行包含57个数字
依此类推....我想要一个新的文本文件b.txt,它看起来像这样:
1 0
34715 0 1 8 0 29 5 5 11 4 8 4 150 0
1 0
2200859 1 4 8 1 18 5 5 10 189 8 4 309 0
4 0
749279 1 1 5 4 38 5 5 0 157 8 4 370 0
2106576 1 1 5 4 38 5 5 1 157 6 18 370 0
2140134 1 1 5 4 38 5 5 1 157 6 13 370 0
2140408 0 1 5 4 38 5 5 1 157 6 16 370 0
1 0
1149510 0 5 8 2 19 5 2 1 111 5 4 388 0
2 0
471429 0 1 6 0 29 5 5 11 4 8 18 414 0
2629646 0 1 6 0 29 5 5 11 4 8 4 414 0
1 0
48249 0 1 8 0 30 5 5 1 115 0 6 458 0
3 0
1515836 0 0 8 2 7 5 3 1 163 2 4 522 0
1516727 0 0 8 2 7 5 3 1 163 2 4 522 0
1516995 0 0 8 2 7 5 3 1 163 2 4 522 0
此具有
第一行相同0 1
第二行包含14个数字,从34715,0,1,....,0
第三行现在包含两个数字1,0
第四行包含14个数字
5th包含两个数字4,0
然后从第6行到第9行每个包含14个数字
依此类推
这可以通过两个步骤来实现-
a.text的较大行(长度> 1)中的最后一位在0之前的下一行中移动,在b.text中看起来像1 0,4 0等
此后,长度大于14的较大行将被分解为更多行,并且行数将等于上述数字,即如果为4 0,则每个长度将有4行(行) 14。
示例-a.txt中具有57个数字的第6行将转换为长度为14的4行,而最后一个数字已在下一行中移位。
我尝试了一些事情,但是没有成功
with open('words.txt','r+') as f, open("B.txt", "w") as b:
for line in f:
index = 0
if line.count(' ') > 1:
words = line.split(' ')
temp = words[-1]
使用此代码,我可以获取最后几行较大的行,但是如何在0之前的下一行中添加它们呢?还在这之后第二步怎么做?
我现在能够解决它。
f=open('sachin.txt','r')
lines=f.readlines()
new_file=open('updated.txt','w')
new_file.write(lines[0])
for i in range(1,len(lines)-1,2):
l1=lines[i]
l2=lines[i+1]
l1.strip("\n")
l2.strip("\n")
l1=l1.split()
l2=l2.split()
l2.append(l1[-1])
l2[0],l2[1]=l2[1],l2[0]
temp=[]
count=0
j=0
while j<(len(l1)):
if count==13:
temp.append(l1[j])
new_temp=" ".join(temp)
new_file.write(new_temp+'\n')
count=0
temp=[]
j+=1
else:
temp.append(l1[j])
j+=1
count+=1
l2=" ".join(l2)
new_file.write(l2+"\n")
new_file.close()
f.close()