Python TXT экстрактор и органайзер

Поэтому мне нужно извлечь информацию о некоторых клиентах и ​​сохранить ее в новой базе данных, все, что у меня есть только текстовый файл, поэтому мы говорим о 5000 или более клиентах, которые сохраняют текстовый файл таким образом:

first and last name   
NAME SURNAME            
zip country n. phone number mobile
United Kingdom      +1111111111
e-mail
email@email.email
guest first and last name 1°
NAME SURNAME
guest first and last name 2°
NAME SURNAME
name    address city    province
NAME SURNAME    London  London  
zip
AAAAA
Cancellation of the reservation.

Поэтому, поскольку файл всегда такой, я думал, что может быть способ очистить его, поэтому я провел небольшое исследование, и это то, что я придумал, но не совсем то, что мне нужно:

with open('input.txt') as infile, open('output.txt', 'w') as outfile:
copy = False
for line in infile:
    if (line.find("first and last name") != -1):
        copy = True
    elif (line.find("Cancellation of the reservation.") != -1):
        copy = False
    elif copy:
        outfile.write(line)

Код работает, но просто читает файл из строки в другую и копирует контент, который мне нужен, что-то, что будет копировать контент в другом формате, подобном этому. Я могу загрузить в базу данных формат, который мне нужен, это:

first and last name | zip country n. phone number mobile|e-mail|guest first and last name 1°|name    address city    province|zip

Так что в этом случае мне нужно это так:

NAME SURNAME | United Kingdom      +1111111111|email@email.email|NAME SURNAME   London  London  |AAAAA

Для каждой строки в output.txt

Ребята, вы думаете, сложно это создать? Кто-нибудь может мне помочь? любой совет будет помочь полный

1 ответ

Вот некоторые хорошие инструменты для того, что вы хотите сделать:

data = '''first and last name   
        NAME SURNAME            
        zip country n. phone number mobile
        United Kingdom      +1111111111
        e-mail
        email@email.email
        guest first and last name 1
        NAME SURNAME
        guest first and last name 2
        NAME SURNAME
        name    address city    province
        NAME SURNAME    London  London  
        zip
        AAAAA
        Cancellation of the reservation.
        '''
# split on space, convert to list
ldata = data.split()
# strip leading and trailing white space from each item
ldata = [i.strip() for i in ldata]
# split on line break, convert to list
ndata = data.split('\n')
ndata = [i.strip() for i in ndata]
#convert list to string   
sdata = ' '.join(ldata)

print ldata
print ndata
print sdata

# two examples of split after, split before
name_surname = sdata.split('first and last name')[1].split('zip')[0]
print name_surname

country_phone = sdata.split('mobile')[1].split('e-mail')[0]
print country_phone

>>>

['first', 'and', 'last', 'name', 'NAME', 'SURNAME', 'zip', 'country', 'n.', 'phone', 'number', 'mobile', 'United', 'Kingdom', '+1111111111', 'e-mail', 'email@email.email', 'guest', 'first', 'and', 'last', 'name', '1', 'NAME', 'SURNAME', 'guest', 'first', 'and', 'last', 'name', '2', 'NAME', 'SURNAME', 'name', 'address', 'city', 'province', 'NAME', 'SURNAME', 'London', 'London', 'zip', 'AAAAA', 'Cancellation', 'of', 'the', 'reservation.']
['first and last name', 'NAME SURNAME', 'zip country n. phone number mobile', 'United Kingdom      +1111111111', 'e-mail', 'email@email.email', 'guest first and last name 1', 'NAME SURNAME', 'guest first and last name 2', 'NAME SURNAME', 'name    address city    province', 'NAME SURNAME    London  London', 'zip', 'AAAAA', 'Cancellation of the reservation.', '']
first and last name NAME SURNAME zip country n. phone number mobile United Kingdom +1111111111 e-mail email@email.email guest first and last name 1 NAME SURNAME guest first and last name 2 NAME SURNAME name address city province NAME SURNAME London London zip AAAAA Cancellation of the reservation.
 NAME SURNAME 
 United Kingdom +1111111111 
Другие вопросы по тегам