我最近开始编写脚本,并且在嵌套循环方面遇到困难。我没有从第一个循环获取第一个迭代器对象作为第二个输入,以正确运行。如何自动调用循环中的下一个迭代器
问题本身很简单。我想将数据中第1行的第二项('20')更改为范围内的数字并创建一个文件。 因此,如果范围中的第一个数字是14,那么文件的第一行是(L,14,0,0,0,0),并获取名称data1.txt。
数据:
L,1,5.827,20,-4.705,0
L,20,0,0,0,0
L,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到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
请格式化更好的下一次你的代码。 –
Hi Ami Tavory。道歉,如果它不是很容易遵循,但我不知道你的意思是更好的格式,你会能够添加我应该做的不同/更好的是它更容易在眼睛上?感谢您的反馈。 –
就在上面,应该有一个“编辑x小时前”的链接。如果你点击它,它会显示你的变化。 –