Python

유용한 문자열 관련 함수들

Man.날.코딩 2023. 3. 8. 01:06
반응형
SMALL

문자열 데이터의 정의 (Python String)

파이썬은 C/C++, Java와는 달리 기본적인 자료형을 제공하지 않는다.

다만 기본적인 자료형(Data Type)을 클래스로 제공한다.

문자열 자료형(String Data Type) 역시 마찬가지로 ' str ' 이라는 클래스로 제공한다.

파이썬의 이러한 특징이 초보 개발자들에게는 파이썬을 쉽게 인식하게 만들고, 숙련된 개발자들에게는 편리함을 제공한다.

 

파이썬에서 문자열(String)은 ""(큰따옴표)나 ''(작은따옴표)를 사용하여 표현할 수 있다.

a1 = "이렇게 하면 a1이라는 변수에 이 문자열 데이터를 입력할 수 있습니다. 쉽죠?"

a2 = '이렇게 작은따옴표를 이용해도 문자열 데이터를 입력할 수 있습니다. 쉽죠?'

 

또한 여러줄의 문자열을 표현하기 위해서는 """ 문자열 """ 또는  ''' 문자열 ''' 과 같이 3개의 큰따옴표(또는 작은 따옴표)를 사용하여 표현할 수 있다.

a1 = """이것은 파이썬에서 멀티라인을 표현하기 위해서 사용가능한 방법입니다.
파이썬은 문자열을 쉽게 표현할 수 있도록 여러가지 유용한 기능들을 제공하고 있습니다.
파이썬은 많은 개발자들에게 배우기 쉬운 프로그래밍 언어입니다."""

a2 = '''이것은 파이썬에서 멀티라인을 표현하기 위해서 사용가능한 방법입니다.
파이썬은 문자열을 쉽게 표현할 수 있도록 여러가지 유용한 기능들을 제공하고 있습니다.
파이썬은 많은 개발자들에게 배우기 쉬운 프로그래밍 언어입니다.'''

 

이스케이프 문자 (Escape Character)

문자열에 "(큰 따옴표)나 또는 ' (작은 따옴표)를 삽입하려면 어떻게 해야 할까?

이렇게 특별한 의미를 갖고 있는 문자들을 '이스케이프 문자(Escape Character)'라고 하며, 파이썬에서는 이러한 이스케이프 문자들을 표현할 수 있는 방법을 제공한다.

 

위 질문에서와 같이 "(큰 따옴표)나 또는 ' (작은 따옴표)를 표현(저장)하기 위해서는  \ (역슬래쉬) 문자와 함께 붙여서 사용하면 된다.

a1 = "이것은 문자열안에서 큰따옴표 \" 문자열 \" 를 사용하는 예입니다."
a2 = "이것은 문자열안에서 작은따옴표 \' 문자열 \' 를 사용하는 예입니다."

 

그렇다면 \ (역슬래쉬) 문자는 어떻게 표현할까? 마찬가지로 \ (역슬래쉬)를 붙여서 표현이 가능하다. 즉, 역슬래쉬 문자 두개를 붙여서 사용하면 된다.

a1 = "이렇게 하면 \\ 역 슬래쉬 문자 한개가 표현됩니다"

 

다음과 같은 이스케이프 문자들이 있고 \ 역슬래쉬 문자를 붙여서 표현이 가능하다.

\' 작은따옴표
\\ 역 슬래쉬
\n 뉴 라인
\r 캐리지 리턴
\t 탭 (Tab)
\b 백스페이스
\f Form Feed
\ooo 8진수
\xhh 16진수

 

문자열 자르기 (Slice A String)

어떠한 프로그래밍 언어에서도 비슷하지만 문자열은 배열처럼 표현할 수 있다. 원론적으로 따지면 문자열은 배열이 맞다. 다만 파이썬에서는 문자열을 str 객체로 제공하기 때문에 엄밀히 따지면 파이썬에서는 문자열이 배열은 아니다. 하지만 앞서 언급했던것처럼 문자열을 배열과 같이  [ ] 를 이용하여 하나의 문자 또는 문자열의 부분을 표현할 수 있고 또는 따로 분리할 수 있는 기능을 제공한다.

 

문자열 자르기는 대괄호 [ ] 안에 : 콜론 기호를 사용하여 부분적으로 분리할 수 있다.

a = "abc def ghi"
print(a[4:7])
def

위와 같이 하면 def 가 출력이 되는데 대괄호 [ ] 안에 : 콜론을 기준으로 왼쪽은 문자열을 자르기 시작할 인덱스(Start Index)이며 오른쪽은 자르기 전까지의 인덱스이다. 따라서 위의 내용은 4번째 인덱스에서부터 7번째 인덱스 전까지 즉, 6번째 인덱스까지 잘라내라는 의미이다.

 

대괄호 [ ] 안의 : 콜론 앞 부분을 생략이 가능한데, 이렇게 할 경우 첫번째 인덱스부터 문자열 데이터를 가져오라는 의미이다.

대괄호 [ ] 안의 : 콜론 뒷 부분도 생략이 가능한데, 이렇게 할 경우 시작 인덱스부터 문자열의 마지막까지 가져오라는 의미이다.

myString = "abc def ghi"
print(myString[:3])
print(myString[8:])
abc
ghi

 

특이하게도 파이썬에서는 마이너스 인덱싱이 가능하다. 문자열의 가장 뒷부분이 -1 인덱스이고 뒤에서 앞으로 이동하면서 -1씩 인덱스가 증가한다.

myString = "abc def ghi"
print(myString[-1])
i

위와 같이 문자열 myString의 -1 인덱스를 출력하는 경우 i 가 출력된다.

 

아래의 코드는 마이너스 인덱스를 사용하여 문자열을 출력한 예제이다.

myString = "abc def ghi"

print(myString[-3:])
print(myString[-7:-4])
ghi
def

 

문자열 수정

파이썬에서는 문자열에서 특정 문자 또는 서브 문자열을 수정할 수 있도록 str 클래스의 메소드를 제공한다.

 

upper() 

upper() 메소드는 문자열내에 모든 문자들을 대문자로 바꿔준다.

 

lower()

lower() 메소드는 문자열내에 모든 문자들을 소문자로 바꿔준다.

 

strip()

strip() 메소드는 파라미터없이 사용시 문자열내에 앞 또는 뒷부분에 있는 쓸데없는 공백 문자를 없애준다. 문자열 앞 또는 뒷부분에 공백이 없으면 문자열을 그대로 반환해준다. 파라미터로 특정 문자(열)을 입력하면 시작부분 또는 끝부분에 위치하는 해당 문자(열)을 삭제한다.

 

replace()

replace() 메소드는 문자열안에 특정 문자(열)를 다른 문자(열)로 모두 대치시킨다. 이때 대치시키고자 하는 서브 문자(열)의 갯수를 제한하고자 할때 카운트 파라미터를 이용하여 대치시키는 서브 문자(열)의 갯수를 제한 할 수 있다. 

 

split()

split() 메소드는 문자열을 분리하여 리스트 객체로 반환해준다. 이때 아무런 파라미터도 입력하지 않으면 문자열 내부에서 공백문자(space)를 기준으로 분리한다. sep 파라미터에 특정 문자를 지정하면 해당 문자를 기준으로 문자열을 분리하여 리스트 객체로 반환한다. maxsplit 파라미터는 몇개의 서브 문자열을 분리할지 결정한다. 

myString = "abc def ghi"

# 문자열을 모두 대문자로 변환한다.
upr = myString.upper()
print(upr)

# 문자열을 모두 소문자로 변환한다.
print(upr.lower())

myString = "  abc aaa ghi  "

# 문자열내에 앞 또는 뒤에있는 공백문자를 모두 제거한다.
print(myString.strip())

myString = "abc aaa ghi"
# 문자열내에 시작부분 또는 뒷부분에있는 'a'를 모두 제거한다.
print(myString.strip('a'))
# 문자열내에 시작부분 또는 뒷부분에있는 'abc'를 모두 제거한다.
print(myString.strip('abc'))

myString = "HelloHelloHelloHelloHello"

# 문자열내에 'Hello'를 모두 'Welcome '으로 바꾼다.
print(myString.replace('Hello', 'Welcome '))

# 문자열내에 'Hello'를 앞에서부터 2개만 'Welcome '으로 바꾼다.
print(myString.replace('Hello', 'Welcome ', 2))

# 문자열내에서 공백 문자를 기준으로 분리하여 리스트에 저장한다.
myString = "Hello Hello Hello Hello Hello"
li_hellos = myString.split()
print(li_hellos)

# 문자열내에서 'o'를 기준으로 분리하여 리스트에 저장한다.
li_hellos = myString.split('o')
print(li_hellos)

# 문자열내에서 공백 문자를 기준으로 앞에서부터 2개만 분리하여 리스트에 저장한다.
# 리스트에 저장되는 문자열 객체는 총 3개가 됨에 주의!!!
li_hellos = myString.split(maxsplit=2)
print(li_hellos)

<<  실행 결과 >>

ABC DEF GHI
abc def ghi
abc aaa ghi
bc aaa ghi
 aaa ghi
zbc zzz ghi
Welcome Welcome Welcome Welcome Welcome 
Welcome Welcome HelloHelloHello
['Hello', 'Hello', 'Hello', 'Hello', 'Hello']
['Hell', ' Hell', ' Hell', ' Hell', ' Hell', '']
['Hello', 'Hello', 'Hello Hello Hello']

 

그밖에 다양한 문자열 클래스의 메소드들

여기에서 확인할수 있다.

출처 : Python - String Methods

반응형
LIST