Преобразование данных из текстовых файлов с разделителями табуляции - PullRequest
0 голосов
/ 07 июня 2019

Этот скрипт преобразует данные в базе данных с разделителями табуляции. Существуют локальные идентификаторы (столбец [0] в local.csv), которые являются неверными. Импортированные идентификаторы (столбец [3] в import.txt) заменяют локальные идентификаторы.

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 (с неверными идентификаторами для преобразования)

12345    John    Doe    01/01/1980
23456    Foo    Bar    02/02/1980

import.txt (с сохранением правильных идентификаторов)

John    Doe    01/01/1980    AA12345
Foo    Bar    02/02/1980    AA23456

Скрипт работает. Он будет записывать правильные идентификаторы в новый файл, но тогда у меня, естественно, нет остальной базы данных. Я могу думать о двух способах продолжить. 1) Записать данные обратно в local.csv (кажется, это лучший метод, но я не знаю, как это сделать) или 2) переписать остальную часть базы данных в Programs.TXT. Я пытался последнее: columnLocalIds[0] + "\n " + columnLocalIds[1] + columnLocalIds[2]…

Это приводит к ошибке для любого columnLocalIds[$]> [0], который будет считаться вне диапазона индекса. Я подозреваю, что это потому, что индекс не заполняется во вложенных циклах for. Как тогда лучше подойти к преобразованию данных?

...