2017-04-14 7 views
0

그래서 일부 costumers의 세부 정보를 추출하고 새로운 데이터베이스에 저장해야합니다. 나는 단지 txt 파일을 가지고 있습니다. 그래서 우리는 5000 명의 costumers 또는 그 이상의 txt 파일을이 방법으로 모두 저장했습니다. :파이썬 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) 

코드는 작동하지만 간단히 줄에서 다른 파일로 파일을 읽고 내용을 복사합니다. 나는 데이터베이스에 내가 필요로하는 형식을 업로드 할 수 있어요이 같은 다른 형식으로 콘텐츠를 복사 할 뭔가가 필요하면이 있습니다 :

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 protected]|NAME SURNAME London London |AAAAA 

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