您好我有两个文本文件,每个文件都包含有关某些结构的不同信息。结构在两个文件中都由一个ID号标识。我想要做的是在第一个文件中读取并跳过不符合条件的数据行。然后在第二个文件中跳过没有相同ID号的行,并处理其他行。我尝试使用嵌套for循环来做,我也尝试了它作为两个单独的函数,但两个尝试都没有。我现在正试图使用如下所示的一个循环来完成它,但是得到这个错误
UnboundLocalError: local variable 'linel' referenced before assignment
这是代码。我
F = 'file1.txt'
Fl = 'file2.txt'
X = [] # Creats Data Lists
M = []
Id1 = []
Id2 = []
LC = 10
N = 11
fl = open(Fl)
fl.readline()
nlinesl = islice(fl,N)
f = open(F) #Opens file
f.readline() # Strips Header
nlines = islice(f, N) #slices file to only read N lines
for line in nlines and linel in nlinesl:
if line !='':
linel = linel.strip()
linel = linel.replace('\t','')
columnsl = linel.split()
lum = float(columnsl[1])
if lum != LC:
continue
id1 = int(columnsl[0])
Id1.append(id1)
if line !='':
line = line.strip()
line = line.replace('\t','')
columns = line.split()
id2 = int(columns[1])
Id2.append(id2)
if Id != Id2:
continue
x = columns[2] # assigns variable to columns
X.append(x)
print(X)
这是我想要发生的事情的一个例子 两个文件
file1= 1 1 1 1 file2 = 1 1 1 1
2 5 1 1 1 2 1 1
2 3 4 4 1 1 1 1
Lc = 5
Xa = 1
因此只有file1的第二行才能生存,这意味着只会处理file2中的第二行,因为它们具有相同的id。在我的文件中,ID是
id = columns[0] for file1
和
id = columns[1] for file2
提前致谢
答案 0 :(得分:2)
我不认为这是合法的语法:
for line in nlines and linel in nlinesl:
请改为尝试:
for line, line1 in zip(nlines, nlines1):
另外,这些变量很容易变得很容易变错:)
如,
a = range(20, 26)
b = range(200, 226)
#for i in a and j in b: # causes
# print i, j # error
for i, j in zip(a, b):
print i, j
按预期生成输出
20 200
21 201
22 202
23 203
24 204
25 205
答案 1 :(得分:0)
这些方面的东西:
ids = set()
for line in nlines:
if line != '':
cols = line.strip().replace('\t','').split()
lum = float(cols[1])
lid = int(cols[0])
if lum != LC:
ids.add(lid)
for line in nlinesl:
if line != '':
cols = line.strip().replace('\t','').split()
lid = int(cols[1])
if lid in ids:
x = cols[2]
X.append(x)