[파일과 예외] 데이터 가져오기
데이터 처리 : 입력 - 처리 - 출력
데이터를 읽으려면 open() 함수를 사용합니다.
open() 내장함수를 사용해서 파일에 있는 데이터를 접근할 때는 나열자(iterator)가 만들어져서 파일에서 코드를 한 번에 한 라인씩 데이터를 보내줍니다.
데이터를 읽으려면 open() 함수를 사용합니다.
open() 내장함수를 사용해서 파일에 있는 데이터를 접근할 때는 나열자(iterator)가 만들어져서 파일에서 코드를 한 번에 한 라인씩 데이터를 보내줍니다.
표준적인 열기 - 처리- 닫기 코드입니다.
the_file=open('hellow.txt')
# Do something with the data
# in "the_file".
the_file.close()
# Do something with the data
# in "the_file".
the_file.close()
IDLE을 사용해서 파이썬의 파일 입력 메커니즘을 사용해 보겠습니다.
데이터를 가져왔습니다.
이 데이터는 대부분 '사람>>콜론>>대사'형식의 데이터를 가지고 있습니다.
Man : Is this the right room for an argument?
Other man : I've told you once.
.
.
.
Other man : I've told you once.
.
.
.
split() 메서드를 활용해 각각 라인에서 필요에 따라 부분만 뽑아 낼 수 있습니다.
(role, line_spoken)=each_line.split(':')
split()에 의해 ''안에 든 :를 기준으로 각 라인의 '사람'과 '대사'가 분할됩니다.
데이더 맨 윗 라인을 예로들면 'Man'이라는 문자열은 role, 'Is this the right room for an argument?'문자열은 each_line에 대입됩니다.
만약 콜론이 한 라인에 두개가 들어있다면 인자를 추가해 줍니다.
(role, line_spoken)=each_line.split(':', 1)
선택적 인자에 1을 지정하면 뒤에 콜론이 있더라도 앞에있는 콜론에서 분할하여
콜론을 기점으로 두 부분으로 분할됩니다.
만약 선택적 인자를 2로 지정하면 세 부분으로 분할 되겠죠.
빨간 박스안 대화에 콜론이 있어도 선택인자를 1로 하였기 때문에 그 보다 앞에 있던 콜론을 기점으로만 분할된 것을 확인할 수 있습니다.
그런데 에러가 하나 포착되었습니다.
콜론이 없는 라인은 분할하지 못 하였기 떄문입니다.
이럴 경우 조건문을 써주십시오.
>>> data open('hellow.txt')
>>>for each_line in data:
if not each_line.find(':')== -1:
(role, line_spoken)=each_line.split(':',1)
print(role)
print('said: ')
print(line_spoken)
>>>for each_line in data:
if not each_line.find(':')== -1:
(role, line_spoken)=each_line.split(':',1)
print(role)
print('said: ')
print(line_spoken)
-1은 find() 메서드가 문자열에서 콜론을 찾지 못했을 때 반환하는 값입니다.
if not 키워드로 인해 조건을 반대로 만들어서 -1, 즉 콜론을 같지 않으면 콜론있는 것만 콜론 기점으로 분할되어 출력되게 합니다.
'Python' 카테고리의 다른 글
[파일과 예외] 파일이 없어진 경우 예외 처리 #2 (0) | 2012.02.02 |
---|---|
[파일과 예외] try/except (1) | 2012.02.02 |
[파일과 예외] 데이터 가져오기 - find() 메서드 (0) | 2012.02.02 |
[코드공유하기] 함수 모듈 #2 (1) | 2012.02.01 |
[코드공유하기] 함수 모듈 #1 (1) | 2012.02.01 |
[파이썬의 시작] 리스트 #5 - 리스트 안에 리스트 출력 (0) | 2012.01.17 |
[파이썬의 시작] 리스트 #4 - 리스트 안에 리스트 저장 (0) | 2012.01.17 |