我正在尝试从另一个.txt文件中的对象列表中获取数据表.txt文件中的信息。
在代码List.txt看起来像
Obj2
Obj5
Obj6
etc.
和DataTable.txt看起来像
Obj1 Data1
Obj2 Data2
Obj3 Data3
etc.
我试过
f = file('List.txt')
g = file('DataTable.txt')
for line in f:
l = line.split()
name = l[0]
for row in g:
if row.startswith(name):
data = row.split()
print data[8]
但它只打印列表中第一个条目的数据。有谁能找到问题?
答案 0 :(得分:1)
总结@Borealid和@Ignacio给出的精美答案,
f = file('List.txt')
g = file('DataTable.txt')
for line in f:
l = line.split()
name = l[0]
g.seek(0)
for row in g:
if row.startswith(name):
data = row.split()
print data[8]
答案 1 :(得分:0)
迭代file
消耗它。要么回到开头,要么按顺序缓存其中一个文件。
答案 2 :(得分:0)
问题是你在g
的第一行f
一直走过。{1}}。在f
的第二行,g
没有其他内容。
您需要将g
重置为第一行。您可以在start_pos = g.tell()
后面g.open
,然后在g.seek(start_pos)
完成后for row in g
添加{{1}}。
答案 3 :(得分:0)
当您遍历文件时,您将移动您正在阅读的位置。将其视为移动文件的光标。为了绕过这个问题,只需先读入数据并迭代它。
f = file('List.txt').read().splitlines() #read in the whole file, then split on the lines
g = file('DataTable.txt').read().splitlines() #read in the whole file, then split on the lines
for line in f:
l = line.split()
name = l[0]
for row in g:
if row.startswith(name):
data = row.split()
print data[8]