我試圖將類似問題的解決方案放在一起,但失敗了。我只是不知道有足夠的瞭解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