파이썬 정규표현식 연습 1 특정 등장인물의 대사 모으기

박은정·2021년 7월 24일
0

특정 등장인물의 대사 모으기

대사 파일 만드는 과정

Line 리스트에 모여있는 모니카의 대사 텍스트를 monica 문자열에 담고
이 문자열을 파일에 저장
리스트에서 문자열로 대사를 옮길 때 그냥 옮기는 것이 아니라
각 대사가 끝날 때마다 줄바꿈 문자인 \n을 추가한다

1. findall() 메서드 → Line 리스트 만들기

찾은 조건식을 모두 리스트로 만들어 준다는 점에서 쉽게 사용할 수 있다

re.search()re.match() 보다는 re.findall() 가 더 선호하는 경우가 있다
더 알아보기

여기서도 모니카의 대사를 모두 모으려면 findall()가 가장 적합한 명령어이다

미리 컴파일해 놓은 검색 조건을 script101에서 모두 찾아
리스트로 변환해 Line이라는 변수에 저장하라는 명령을 내리면 리스트로 반환된다

# 'Monica:' 다음 아무거나 반복되는 (.+) 패턴을
# script101에서 찾아 리스트로 반환된다
>>> Line = re.findall(r'Monica:.+', script101)

제대로 명령어를 인식했는지 확인하기 위해 3문장만 출력해보자
Lion[:3] : Line 리스트 요소 중 앞 3개까지만 출력하라는 의미

>>> print(Line[:3])
["Monica: Thereis notiong to tell! He's just some guy I work with!\r", "Monica: Okay, evetybody relax. This is not even a date. It's just two people going out to dinner and-not having sex.\r", "Monica: And They weren't looking at you before?!\r"]

2. for문Line 리스트 더 매끄럽게 출력

실제로 결과값을 보기위해 출력할 때는
fot문을 사용하면 더 매끄럽게 출력할 수도 있다

>>> for item in Line[:3]:
        print(item)
        
Monica: Thereis nptiong to tell! He's just some guy I work with!

Monica: Okay, evetybody relax. This is not even a date. It's just two people going out to dinner and-not having sex.

Monica: And They weren't looking at you before?!

>>> f.close()

3. 리스트로 저장한 모니카의 대사를 텍스트 파일로 저장

대사를 저장한 파일 'monica.txt'를 쓰기 모드로 만든다
코덱 오류를 방지하기 위해 encoding = 'utf-8'은 붙여 준다

>>> f = open('monica.txt', 'w', encoding = 'utf-8')

텍스트 파일에 대사를 저장하기 위해서
Line 리스트에 저장한 모니카 대사 리스트를 문자열 형식으로 다시 저장해야 한다
여기에서 사용할 객체를 'monica' 로 만드는데,
이때 'monica' 객체를 선언할 때 빈 문자열을 저장하면 문자열 형식으로 객체가 만들어진다

>>> monica = ''

Line 리스트의 모든 원소를 가져와 monica 문자열에 추가
리스트를 그대로 문자열로 바꿔 저장할 수도 있지만,
for문을 이용하면 정돈된 문자열로 저장할 수 있다

>>> for i in Line:
        monica += i

객체 f를 사용해 monica.txt 파일에 monica 문자열 입력했을 때
어떤 숫자 파일에 쓴 문자의 개수 가 나온다면 정상적으로 입력된 것이다

>>> f.write(monica)
4542 
>>> f.close() # 작업이 끝났으면 파일 닫기!!

4. 한 줄씩 정렬하도록 출력하기

이때 monica.txt를 보면 한 줄에 모두 작성된 것을 확인할 수 있는데
이를 한 줄씩 가지런히 정리해보자

모니카의 대사를 찾아서 저장할 때마다 줄을 바꾸라고 명령하면 된다
print() 함수에서 줄바꿈 명령어 \n

>>> print('다음과 같은 표기로 줄을 바꿀 수 있습니다. \n이제 줄이 바뀌었군요!')
다음과 같은 표기로 줄을 바꿀 수 있습니다.
이제 줄이 바뀌었군요!

대사 파일 만드는 과정

Line 리스트에 모여있는 모니카의 대사 텍스트를 monica 문자열에 담고
이 문자열을 파일에 저장
리스트에서 문자열로 대사를 옮길 때 그냥 옮기는 것이 아니라
각 대사가 끝날 때마다 줄바꿈 문자인 \n을 추가한다

>>> monica = '' # monica 객체를 다시 선언
>>> for i in Line:
        monica += i + '\n' # monica에 저장하는 모든 i값에 '\n'을 더해 monica에 저장함
        
# 슬라이싱해서 100범째까지만 읽어보자 \n이 추가됨
>>> monica[:100]
"Monica: There's nothing to tell! He's just some guy I work with!\nMonica: Okay, everybody relax. This."

>>> f = open('monica.txt', 'w', encoding = 'utf-8')
>>> f.write(monica)
4615 # '\n'을 추가해 파일에 쓴 문자 개수가 조금 늘어난다

>>> f.close()
profile
새로운 것을 도전하고 노력한다

0개의 댓글