如何在循环中自动调用下一个迭代器

2024-04-26 05:36:16 发布

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

我最近开始编写脚本,在嵌套循环方面遇到了困难。我没有从第一个循环中得到第一个迭代器对象作为第二个循环的输入来正常运行。你知道吗

问题本身很简单。我想将数据中第1行的第二项(“20”)更改为范围内的数字,并创建一个文件。 因此,如果范围中的第一个数字是14,那么文件的第一行是(L,14,0,0,0),并获得一个名称data1.txt。你知道吗

数据:

L,1,5.827,20,-4.705,0
五十、 20,0,0,0,0
五十、 12,15,0,-6,0

原稿:

import re
from itertools import islice
import numpy as np

x = np.arange(14,30.5,0.5)  
size = x.size                            

with open('data.txt', 'r') as line:                              
    for line in islice(line, 1, 2):
        re.sub(r'\s', '', line).split(',')          
    nline = line[:2] + line[3:]

x = iter(x)
y = next(x)

for i in x:
    nline = nline[:2] + str(y)+ nline[3:]           

with open('data.txt', 'r') as file:
    data = file.readlines()
    data[1] = nline

for i in range(1,size):                                 
    with open('data%i.txt' %i, 'w') as file:          
        file.writelines(data) 

编辑时间:

我在剧本方面取得了一些进展,我几乎就要完成了。你知道吗

在第一个循环之后,我得到了我需要的输出(33个案例)。我现在要做的就是将它们写入一个33个唯一的文件,名为data1 to data33。然而,第二个循环在第一个循环中又重复了33次,并创建了1089个案例。因此,文件中的结果只是第一个循环的最后一行。你知道吗

有没有建议如何允许第二个循环创建文件,但禁用它的数据?你知道吗

更新脚本:

import re
from itertools import islice
import numpy as np

x = np.arange(14,30.5,0.5)  
size = x.size                            

with open('data.txt', 'r') as line:                              
   for line in islice(line, 1, 2):
       re.sub(r'\s', '', line).split(',')

for i in x:
    y=str(i)                                              
    nline = line[:2] + y + line[4:]

    with open('data.txt', 'r') as file:
        data = file.readlines()
        data[1] = nline

        for i in range(1,size+1):    
            with open('data%i.txt' %i, 'w') as file:
                file.writelines(data)
                print data

Tags: 文件inimportretxtfordatasize
1条回答
网友
1楼 · 发布于 2024-04-26 05:36:16

似乎您正在尝试将字符串连接到列表。nline = nline[:2] + str(y)+ nline[3:]。这将导致类型错误。你知道吗

另外nline[:2]获取列表的前2部分,因此您希望将nline[:1]拆分为nline[2:]

试着做一些类似的事情:

import re
from itertools import islice
import numpy as np

x = np.arange(14,30.5,0.5)  
size = x.size                            

with open('data.txt', 'r') as line:                              
    for line in islice(line, 1, 2):
     re.sub(r'\s', '', line).split(',')          
    nline = line[:1] + line[2:] #not sure what this does, but this might be wrong, change accordingly

x = iter(x)
y = next(x)
temp = []
temp.append(y)

for i in x:
 nline = nline[:1] + temp + nline[2:]           

with open('data.txt', 'r') as file:
    data = file.readlines()
    data[1] = nline

for i in range(1,size):                                 
    with open('data%i.txt' %i, 'w') as file:          
        file.writelines(data) 

相关问题 更多 >