此脚本将转换制表符分隔的数据库中的数据。存在不正确的本地ID(local.csv中的column [0])。导入的ID(import.txt中的column [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循环内填充。那么如何更好地转换数据呢?