我试图将类似问题的解决方案放在一起,但失败了。我只是不知道有足够的了解Python的又:(按列表顺序从文件中返回行
我有一个特定的顺序的前一个inputlist
包含元素:["GRE", "KIN", "ERD", "KIN"]
我有一个datafile
含有的元素,再加上其他数据例如:
"ERD","Data","Data"...
"KIN","Data","Data"...
"FAC","Data","Data"...
"GRE","Data","Data"...
我需要创建一个包含在它们出现在inputlist
顺序从datafile
行的outputlist
。
的下面的代码返回在出现在datafile
的顺序,这不是预期的行为outputlist
...: - \
with open(inputfile, 'r') as f:
names = [line.strip() for line in f]
outputlist = []
with open(datafile, 'r') as f:
for line in f:
name = line.split(',')[0]
if name[1:-1] in names:
outputlist.append(line)
output = open(outputfile, 'w')
output.writelines(outputlist)
我怎样才能把它以适当的顺序返回列表?在此先感谢您的帮助:-)
编辑
感谢的奥斯卡,这是我实现的解决方案:
datafile = 'C:\\testing\\bldglist.txt'
inputfile = 'C:\\testing\\inputlist.txt'
outputfile = "C:\\testing\\output.txt"
with open(inputfile, 'r') as f:
inputlist = [line.strip() for line in f]
def outputList(inputlist, datafile, outputfile):
d = {}
with open(datafile, 'r') as f:
for line in f:
line = line.strip()
key = line.split(',')[0]
d[key] = line
with open(outputfile, 'w') as f:
f.write('"Abbrev","Xcoord","Ycoord"\n')
for key in inputlist:
f.write(d[key] + '\n')
outputList(inputlist, datafile, outputfile)
数据文件有多大?如果它很容易适应内存,则可以先从数据文件中创建一个字典。 – 2012-03-25 17:52:47
如果没有,就有'搁置'。 – 2012-03-25 17:55:27
这些都是非常小的文本文件,''datafile'中只有164行' – TheMapSmith 2012-03-25 18:28:23