2017-04-14 5 views
0

私はいくつかのcostumersの詳細を抽出し、新しいデータベースに保存する必要があります私はすべてのtxtファイルを持っているので、我々は5000人のcostumers以上について話している以上、 :Python txtの抽出とオーガナイザ

first and last name 
NAME SURNAME    
zip country n. phone number mobile 
United Kingdom  +1111111111 
e-mail 
[email protected] 
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) 

コードは機能しますが、行から他のファイルにファイルを読み込んでコンテンツをコピーするだけです私はデータベースに私は必要な形式をアップロードすることができています。このような他の形式のコンテンツをコピーする何かを必要とすることはこれです:

NAME SURNAME | United Kingdom  +1111111111|[email protected]|NAME SURNAME London London |AAAAA 

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

だから、この場合、私はこのようにそれを必要とします

output.txt内のすべての行について

誰かが私を助けることができると思いますか?何かアドバイスを助けることになるフル

答えて

0

これらは、あなたがやって探しているもののためにいくつかの良いスクレイピングツールです:

data = '''first and last name 
     NAME SURNAME    
     zip country n. phone number mobile 
     United Kingdom  +1111111111 
     e-mail 
     [email protected] 
     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 protected]', '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 protected]', '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 protected] 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 
関連する問題