此脚本将转换以制表符分隔的数据库中的数据。存在不正确的本地ID(local.csv中的[0]列)。导入的ID(import.txt中的[3]列)将替换本地ID
import csv
importedIds = open("import.txt", 'r') #Database with correct IDs
localIds = open("local.csv", 'r') #Databse with incorrect IDs
programs = open("programs.txt", 'w') #New database
for localLine in localIds:
columnLocalIds = localLine.strip().split('\t') #'\t' is tab delimination
for importedLine in importedIds:
columnPrograms = importedLine.strip().split('\t') #Change local ID to imported ID
columnLocalIds[0] = columnPrograms[3] #Transform data
toWrite = columnLocalIds[0] + "\n "
programs.write(toWrite) #Write new databse
importedIds.close()
localIds.close()
programs.close()
一些样本数据:
local.csv(要转换的ID不正确)
12345 John Doe 01/01/1980
23456 Foo Bar 02/02/1980
imported.txt(保留正确的ID)
John Doe 01/01/1980 AA12345
Foo Bar 02/02/1980 AA23456
剧本很好用。它会将正确的ID写入一个新文件,但我自然没有数据库的其余部分。我可以想出两种方法来进行。1) 将数据写回local.csv(似乎是更好的方法,但我不知道如何实现),或者2)将数据库的其余部分重写为programs.txt。我尝试了后者:columnLocalIds[0] + "\n " + columnLocalIds[1] + columnLocalIds[2]…
这会导致任何columnLocalIds[$]
>[0]将被视为超出索引范围。我怀疑这是因为索引没有在嵌套for循环中填充。那么,如何更好地转换数据呢
目前没有回答
相关问题 更多 >
编程相关推荐