Python 관련 포스팅 목록
2020/06/24 - [Linux/Python] - Python 현재 날짜, 시간 구하기
2020/06/24 - [Linux/Python] - Python 파일 읽기, 쓰기(FILE I/O)
2020/06/19 - [Linux/Python] - Python Flask Jinja2 템플릿 사용하기
2020/06/18 - [Linux/Python] - Python Flask 엔드포인트 설정하기
2019/08/05 - [Linux/Python] - Python Flask 웹 서버 구축하기 - 2
2019/08/04 - [Linux/Python] - Python Flask 웹 서버 구축하기 - 1
목차
API의 필요성
파이썬에서 긴 문자열에서 공백(" ") 또는 콤마(",") 문자열을 이용하여 단어 단위로 자르고 싶을 때가 있습니다. 이 내용은 C언어의 strtok을 활용한 예제와 동일한 내용입니다.
하지만 python과 c언어의 구조적 특성이 다르기 때문에 다르게 이해할 필요가 있습니다. 예를들어 C언어 절차지향언어에서는 객체의 개념이 없기 때문에 문자열을 자를 때나 복사할 때 매번 원본 소스 문자열에 접근하여 값을 참조해야 합니다.
하지만 Python에서는 쉽게 접근이 가능합니다. 만약 문자열을 자르거나 복사한다면 알아서 새로운 공간에 문자열들을 복사하기 때문입니다.
물론 C에서도 비슷하게 구현할 수도 있지만 하나의 구조체를 선언하여 배열을 받아줄 수 있는 링크리스트를 만들어야합니다.
이처럼 언어간 차이가 분명하고 C보다 파이썬이 개발자 입장에서 다루기 편하다는 걸 알 수 있습니다. 그러면 이제 파이썬에서 문자열을 잘라주는 split 함수에 대해 알아보도록 하겠습니다.
함수 구조 설명
class str:
def split(str token):
...
retrun list
#인자
str token
- 문자열을 자를 때 사용할 기준 문자열
#반환
list
- 기준 문자열로 잘리고 나뉘어진 문자열들의 리스트
예제 목표
C언어에서는 strtok과 같은 API로 문자열을 잘랐을 때 한개의 잘린 문장만 반환되고 반복문을 통해 다음 잘린 문장을 가져와야하는 구조였습니다.
또한 원본 문자열도 수정되는 문제가 있었습니다. 따라서 파이썬의 split 함수는 이러한 문제가 발생하지 않는 차이점을 이해하는 것이 이번 포스팅의 목표입니다. 개발 환경은 Linux Ubuntu 16.04 LTS x64의 Python3.5.2 환경에서 진행하겠습니다.
코드 작성
$ cd /tmp
$ vim split_example.py
import os
example_text = 'hello my name is hws'
print('example_text Type is: %s' % type(example_text))
splited_texts = example_text.split(' ')
print('splited_texts Type is: %s' % type(splited_texts))
print('splited strings...')
for str in splited_texts:
print(str)
example_text 라는 변수에 'hello my name is hws' 라는 문자열을 저장합니다. 이 변수는 곧 str 클래스 타입의 변수입니다. str 클래스는 내부 함수로 split 함수를 제공합니다. 인자로 공백문자(' ')를 전달하여 공백을 기준으로 잘려진 단어들을 List에 추가하여 반환합니다.
이제 이 코드를 실행해보도록 하겠습니다.
실행
$ cd /tmp
$ python3 split_example.py
결과
위와 같이 example_text 변수 str 클래스의 split을 사용하여 'hello', 'my', 'name', 'is', 'hws' 단어가 잘려 splited_texts 리스트 변수에 추가된 것을 알 수 있습니다.