IT

[파이썬 기초] 파이썬 문자열(3) - 문자열 나누기, 결합하기

생각파워 2018. 11. 23. 23:52

파이썬에서 문자열을 리스트로 나누거나, 리스트를 문자열로 결합할 수 있다.

 

1. 문자열 나누기 : split()

split() 메서드는 인자로 주어진 문자를 이용해 문자열을 분리하고, 그 결과를 리스트로 반환한다.

인자가 없이 호출했을 경우에는 줄바꿈, 스페이스, 탭을 사용해서 분리한다.

 >>> name = 'Kang Hodong,Park Sangmin,Kim Yuna'
>>> name.split(',')                                                             # 콤마(,)를 인자로 줘서 콤마로 구분된 결과를 리스트로 출력
['Kang Hodong', 'Park Sangmin', 'Kim Yuna']
>>> name.split()                                                               # 인자를 주지 않아서 공백으로 문자 구분. 예상치않은 결과 출력
['Kang', 'Hodong,Park', 'Sangmin,Kim', 'Yuna']

 

위 예에서 첫번째는 이름 사이에 있는 콤마를 인자로 줘서 콤마로 문자열이 나눠졌다. 

그래서 리스트에 이름 세개가 정확하게 나뉘었다.

두번째 예에서는 인자를 주지 않고 실행했기 때문에 공백을 이용해서 문자를 나누었다.

결과적으로 'Kang Hodong'이란 이름에서 'Kang'이 분리되었고, 그 다음 공백이 있는 곳까지 구분이 되었기 때문에 

'Hodong,Park'이 인자로 구분되었다.

결과적으로 알아보기 힘든 내용으로 리스트 인자가 구성되었다.

문자열 구분인자는 명시적으로 지정해 주는것이 좋다.

 

 

2. 문자열 결합하기 : join()

문자열을 리스트로 나눌 수도 있지만, join()함수를 이용하면 주어진 시퀀스(리스트, 튜플, 딕셔너리)를 문자열로 되돌릴 수도 있다.

문자열 클래스에 속한 메서드이기 때문에 각 리스트 사이에 들어갈 문자를 먼저 적어주고 join() 메서드를 호출하면된다.

인자로 시퀀스를 주면 된다.

 

예를 한번 살펴보자.

위 예에서 이름을 나눈 ['Kang Hodong', 'Park Sangmin', 'Kim Yuna'] 리스트를 사용해 보자.

리스트를 다시 콤마로 구분된 문자열로 만들어보자

>>> name_list
['Kang Hodong', 'Park Sangmin', 'Kim Yuna']
>>> ','.join(name_list)                                                       # 콤마를 이용해서 문자 생성
'Kang Hodong,Park Sangmin,Kim Yuna'
>>> '||'.join(name_list)                                                      # '||'를 이용해서 문자 생성
'Kang Hodong||Park Sangmin||Kim Yuna'
>>> '~~~'.join(name_list)                                                  
'Kang Hodong~~~Park Sangmin~~~Kim Yuna'                      

 

어떤 문자를 사용하든 잘 연결된다.

튜플로 해도 문자열이 잘 만들어진다.

 

>>> name_tuple = ('a','b','c')
>>> name_tuple
('a', 'b', 'c')
>>> type(name_tuple)
<class 'tuple'>
>>> '~~~'.join(name_tuple)
'a~~~b~~~c' 

 

딕셔너리로 해보면 어떻게 될까?

 

>>> name_dict = {'a' : 'Kang Hodong', 'b':'Park Sangmin', 'c':'Kim Yuna'}
>>> ','.join(name_dict)
'a,b,c'

 

키만 인자로 전달돼서 문자열로 합쳐진다.

값을 전달하고 싶으면 values() 메서드를 사용하면된다.

물론 명시적으로 키 값을 전달하고 싶으면 keys()메서드를 사용하면 된다.

 

>>> ','.join(name_dict.values())
'Kang Hodong,Park Sangmin,Kim Yuna'
>>> ','.join(name_dict.keys())
'a,b,c'

 

반응형