메서드들의 정확한 정의나 파라미터 등등 더 자세한 정보는 파이썬 공식 문서를 참조해주세요.
1. 문자열의 길이 구하기 : len(str)
str = "Hello"
length = len(str) # 5
2. 알파벳 문자를 소문자로 치환하기 / 대문자로 치환하기 : str.upper() / str.lower()
str = "HELLO"
str2 = "hello"
str_lower = str.lower() # hello
str_upper = str2.upper() # HELLO
주의할 점은, 이런 식으로 문자열을 가공하는 함수를 사용하게 되면 변경된 새로운 문자열이 반환되는 것이지, 원래 문자열이 바뀌는 것이 아니라는 점입니다. (파이썬에서 문자열은 불변 객체입니다)
3. 특정 문자열을 치환하기 : str.replace(old, new)
문자열 내에 있는 모든 old를 new로 바꿔줍니다.
str = "hello, world"
after = str.replace("o","?") # o가 모두 변경되어 hell?, w?rld가 됩니다
바꾸고 싶은 개수를 3번째 인자로 전달하여, 원하는 개수만큼만 바꾸는 것도 가능합니다.
str = "hello, world"
after_one = str.replace("o","?",1) # hell?, world
after_zero = str.replace("o","?",0) # hello, world
4. 문자열을 특정 구분자로 나누기 : str.split(delimiter)
구분자(delimiter)를 기준으로 문자열(str)을 잘라, 리스트에 담아서 반환해 줍니다.
str = "a,b,c,d,e"
del = ","
after = str.split(del) # ["a","b","c","d","e"]
만약 문자열에 없는 구분자를 이용하여 split을 시도한다면, 잘리지 않은 기존 원본 문자열 전체를 유일한 요소로 가지는 리스트가 반환됩니다.
str = "a,b,c,d,e"
sep = "@@@"
after = str.split(sep) # ["a,b,c,d,e"]
5. 반복 가능한 객체를 특정 문자열로 이어 붙이기 : str.join(iterable)
메서드를 실행할 대상(iterable)을 구분자(str)를 기준으로 하나로 이어 붙인 문자열을 반환해 줍니다.
str = "^^"
i = ["a","b","c"]
after = str.join(i) # "a^^b^^c" (하나의 문자열이 됩니다)
다른 것들과 다르게 join 메서드는 메서드를 제공하는 문자열(str)이, 메서드가 적용되는 대상이 아니고 구분자로 사용된다는 점이 다소 헷갈리기 쉬운 부분인 듯 합니다.
메서드 적용 대상이 되는 iterable은 문자열뿐만 아니라 리스트, 튜플, 세트 등 반복 가능한 객체들이 모두 가능하지만, 이들을 문자열로 합치기 위해 구분자로 넣을 수 있는 타입은 당연히 문자열이어야 할 것이므로 구분자가 맨 앞에 온다고 생각하면 이해에 도움이 될 것 같습니다.
6. 문자열의 등장 위치 찾기 : str.find(sub) / str.index(sub)
대상 문자열(str)에서 찾고자 하는 문자열(sub)이 몇번째 위치에 있는지 인덱스 반환합니다.
sub가 str안에 여러 번 등장하는 경우, 맨 첫번째로 등장하는 위치를 반환합니다.
str = "hello, world"
str2 = "hello, world my world"
sub = "world"
# str.index()
index_sub = str.index(sub) # 7
index_sub2 = str2.index(sub) # world가 처음 등장하는 위치인 인덱스 7을 반환합니다.
# str.find()
find_sub = str.find(sub) # 7
find_sub2 = str2.find(sub) # 7
두 메서드는 기본적으로 같은 기능을 수행하는 함수이지만, 차이점은 str에 sub가 존재하지 않는 경우 반환되는 값이 다르다는 것입니다.
str.find()는 찾고자 하는 문자열이 존재하지 않으면 -1을 반환하고, str.index()는 ValueError 에러를 일으킵니다.
str = "hello, world"
sub = "my"
# str.index()
index_sub = str.index(sub) # ValueError: substring not found
# str.find()
find_sub = str.find(sub) # -1
따라서 값이 없을 경우 예외처리가 필요한 방식에 따라 선택하여 사용할 수 있습니다.
'python' 카테고리의 다른 글
[python] bisect_left와 bisect_right 이해하기 (0) | 2023.08.15 |
---|---|
[python] 파이썬 리스트 extend 함수값이 none으로 나오는 이유 (0) | 2023.06.29 |
[python] 리스트 내용 출력하기 (list print) (0) | 2023.05.25 |
[python] 파이썬 파일 처리와 디렉토리 (1) | 2023.05.03 |