str 객체는 다양한 메소드를 이루고 있다. string 객체가 가지고 있는 모든 method를 알고 싶을 때는 dir(str)을 입력하면 다양한 method를 확인 할 수 있다.
이 외에도 문자열에 사용할 수 있는 여러가지 method를 안내하도록 한다.
- 대문자로 변환하기
문자열.upper()은 숫자가 있어도 상관 없이 소문자로 변환한다.
text = "Hello, World!"
uppercase_text = text.upper()
print(uppercase_text)
## print
HELLO, WORLD!
- 소문자로 변환하기
문자열.lower()은 숫자가 있어도 상관 없이 소문자로 변환한다.
text = "Hello, World!"
lowercase_text = text.lower()
print(lowercase_text)
##print
hello, world!
- 소문자인지 대문자인지 확인하기
문자열.isupper(),문자열.islower()은 해당문자가 대문자로만 구성되어있는지 혹은 소문자로만 구성되어 있는지 알려주는 method다.
3-1 isupper()
>>>'AB'.isupper()
True
>>>'ABd2j1'.isupper()
False
>>>'ABC123'.isupper()
True
3-2 islower()
>>>'abc'.islower()
True
>>>'abcABC'.islower()
False
>>>'abc123'.islower()
다만 숫자에는 영향 받지 않는다.
- 문자열 캐싱
한번 생성된 문자열은 변경 할 수 없다. 동일한 문자열을 여러번 사용해야 하는 경우 메모리 낭비가 발생할 수 있기 때문에 이를 피하기 위하여 intern()함수를 사용해 문자열을 캐싱해 이용한다.
이때 intern함수를 이용하기 위해서는 sys모듈을 import해야한다.
예를 들어 sys.intern("hello")를 사용하면 "hello"문자열을 캐싱해 동일한 문자열을 여러번 사용 할 때 메모리를 절약 할 수 있다.
import sys
text1 = sys.intern("hello")
text2 = sys.intern("hello")
print(text1 is text2)
##print
True
- 문자열 분할
이건 다들 너무 잘 알법하다. split()을 이용하면 특정 구분자를 기준으로 분할 할 수 있다. 분할 되어 나오는 형태는 list이다.
만약 한글자씩 보고자 한다면 split()대신 list(#배열)을 이용하면 된다.
fruits = "apple,banana,orange"
fruit_list = fruits.split(",")
print(fruit_list)
##print
['apple', 'banana', 'orange']
- 문자열 결합
join() 메서드를 사용하면 리스트의 문자열 요소들을 결합할 수 있다.
fruits = ["apple", "banana", "orange"]
fruits_string = ", ".join(fruits)
print(fruits_string)
#print
fruits = ["apple", "banana", "orange"]
fruits_string = ", ".join(fruits)
print(fruits_string)
"구분해 빼고 합치려는 문자 ex), ".join(리스트) 로 이용하면 된다.
split은 구분하고자 하는 문자를 넣는데 join은 이를 앞에 넣고 리스트를 안에 넣는다는 것 잘 구분해야한다.
- 문자열 검색
find(), index(), count() 메서드를 사용하여 문자열 내에서 특정 문자열을 검색하고 조작할 수 있다.
find()는 찾는 문자열의 첫 번째 인덱스를 반환하고,
index()는 찾는 문자열의 첫 번째 인덱스를 반환하지만,
찾는 문자열이 없을 경우 ValueError를 발생시킨다.
count()는 찾는 문자열이 나타나는 횟수를 반환한다.
text = "Hello, World!"
index = text.find("World")
print(index) # 7 찾는 문자열의 첫번째 인덱스
count = text.count("l")
print(count) # 3 찾는 문자열이 몇번 나오는지
strip() 메서드를 사용하여 문자열의 앞뒤 공백을 제거할 수 있다.
공백 제거에는 strip뿐만 아니라 왼쪽 공백을 제거하는 "문자".lstrip() 그리고 오른쪽 공백을 제거하는 "문자".rstrip()가 있다.
left,right라고 이해하면 쉽다.
또한 모든 공백을 제거하는 replace() 도 있다.
8-1 . 공백 제거: strip() 메서드를 사용하여 문자열의 앞 뒤에 있는 공백을 제거할 수 있다.
text = " hello "
stripped_text = text.strip()
print(stripped_text)
##print
hello
8-2. 왼쪽 공백 제거: lstrip() 메서드를 사용하여 문자열의 왼쪽에 있는 공백을 제거할 수 있다.
text = " hello "
left_stripped_text = text.lstrip()
print(left_stripped_text)
#print
hello
8-3. 오른쪽 공백 제거: rstrip() 메서드를 사용하여 문자열의 오른쪽에 있는 공백을 제거할 수 있다.
text = " hello "
right_stripped_text = text.rstrip()
print(right_stripped_text)
##print
hello
8-4. 특정 문자로 공백 제거: strip() 메서드에 인자로 특정 문자를 전달하여 해당 문자로 둘러싸인 공백을 제거할 수 있다.
text = "---hello---"
stripped_text = text.strip("-")
print(stripped_text)
##hello
8-5.모든 공백 제거: replace() 메서드를 사용하여 모든 공백을 제거할 수도 있다.
text = " hello world "
no_spaces_text = text.replace(" ", "")
print(no_spaces_text)
##print
helloworld