Экспорт данных из python в текстовый файл с использованием пакета petl в python

Я пытаюсь извлечь необработанные данные из текстового файла, и после обработки необработанных данных я хочу экспортировать их в другой текстовый файл. Ниже приведен код Python, который я написал для этого процесса. Я использую пакет "petl" в Python 3 для этой цели. location.txt - это файл необработанных данных.

import glob, os
from petl import *


class ETL():

    def __init__(self, input):
        self.list = input


    def parse_P(self):
        personids = None
        for term in self.list:
            if term.startswith('P'):
                personids = term[1:]
        personid = personids.split(',')

        return personid

    def return_location(self):
        location = None
        for term in self.list:
            if term.startswith('L'):
                location = term[1:]
        return location

    def return_location_id(self, location):
        location = self.return_location()
        locationid = None


    def return_country_id(self):
        countryid = None
        for term in self.list:
            if term.startswith('C'):
                countryid = term[1:]

        return countryid

    def return_region_id(self):
        regionid = None
        for term in self.list:
            if term.startswith('R'):
                regionid = term[1:]

        return regionid

    def return_city_id(self):
        cityid = None
        for term in self.list:
            if term.startswith('I'):
                cityid = term[1:]
        return cityid

print (os.getcwd())
os.chdir("D:\ETL-IntroductionProject")
print (os.getcwd())
final_location = [['L','P', 'C', 'R', 'I']]

new_location = fromtext('locations.txt', encoding= 'Latin-1')
stored_list = [] 
for identifier in new_location:
    if identifier[0].startswith('L'):
        identifier = identifier[0]
        info_list = identifier.split('_')
        stored_list.append(info_list)

for lst in stored_list:
    tabling = ETL(lst)
    location = tabling.return_location()
    country = tabling.return_country_id()
    city = tabling.return_city_id()
    region = tabling.return_region_id()
    person_list = tabling.parse_P()
    for person in person_list:
        table_new = [location, person, country, region, city]
        final_location.append(table_new)

totext(final_location, 'l1.txt')

Однако, когда я использую функцию "totext" в petl, она выдает мне "Ошибка подтверждения".

Assertion Error: требуется шаблон Я не могу понять, в чем ошибка. Кто-нибудь может, пожалуйста, объяснить проблему, с которой я сталкиваюсь, и что я должен делать?

1 ответ

Параметр шаблона для функции toext не является обязательным. В этом случае нет формата по умолчанию для написания строк, вы должны предоставить шаблон. Проверьте документ на наличие текста здесь, например: https://petl.readthedocs.io/en/latest/io.html

Шаблон описывает формат каждой строки, которую он записывает, используя заголовки полей для описания вещей, вы также можете при желании передать пролог, чтобы написать заголовок. Базовым шаблоном в вашем случае будет:

table_new_template = "{L} {P} {C} {R} {I}" totext(final_location, 'l1.txt', template=table_new_template)

Другие вопросы по тегам