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

2024-04-25 17:48:34 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: csv数据importtxtid数据库forclose