从制表符分隔的txt文件转换数据

时间:2019-06-07 13:19:19

标签: python csv data-transform

此脚本将转换制表符分隔的数据库中的数据。存在不正确的本地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循环内填充。那么如何更好地转换数据呢?

0 个答案:

没有答案