[Python] 파이썬 자료형(2) 문자열(String)형
1. 문자열형 (String)
문자열(String)이란, 말 그대로 문자, 단어 등으로 구성된 문자들의 집합을 말합니다.
다음 처럼요.
"Hello, My name is Limitless Model"
'L'
"25"
문자열형은 모두 큰 따옴표, 혹은 작은 따옴표로 둘러싸여 있습니다.
그렇다면, 세 번쨰 "25" 는 앞서 배운 숫자형과 무엇이 다를까요??
💡숫자형 vs 문자열 속의 숫자
숫자형 25와, 문자열 속의 숫자 "25"는 무엇이 다를까요?
앞의 숫자형 25는 말 그대로 '숫자(정수)'로서의 25로 인식을 하고, 뒤의 문자열 속 25는 '문자'로서 인식합니다.
다음의 예를 보면 이해가 쉬우실 겁니다.
ndumber라는 변수에는 숫자형 25를 대입하고, string이라는 변수에는 문자열형 25를 대입했습니다.
그리고 각 자료형끼리 더하기 연산자를 이용해 연산을 시행했을 때,
숫자형 25는 수치적인 계산을 거쳐 50이 출력된 반면, 문자열형은 문자열 두 개가 나란히 나열됨을 알 수 있습니다.
문자열형을 여러 줄 작성하고 싶을 때는 큰(작은) 따옴표를 연달아서 세 번 사용하시면 됩니다.
1) 문자열형의 인덱싱(Indexing)
💡인덱싱의 기본 구조:
문자열명 [문자 주소]
인덱싱(Indexing)이란, 무엇인가를 "가리킨다"는 의미입니다.
인덱싱을 통해 문자열 내의 원하는 주소의 문자를 추출할 수 있습니다.
컴퓨터는 보통 주소 0번을 첫번째 주소로 인식합니다.
"Limitless"라는 문자열을 받을 때, 시작 문자인 "L"의 주소를 0번으로, 순차적으로 인식해가는 것입니다. 다음 처럼요.
여기서 인덱싱을 하는 방법은, 문자열이 저장된 변수명 뒤에 대괄호를 이용하여 해당 문자의 주소를 적는 것입니다.
"Limitless"가 저장된 변수 string에서 2번 주소를 가진 문자는 "m"이므로, 추출값이 m임을 확인할 수 있습니다.
그렇다면 Limitless 문자열에서 "less"문자열을 추출하고 싶으면 어떻게 할까요?
위처럼 주소 하나하나를 인덱싱해서 통합하는 방법도 있지만, 파이썬에서는 더 좋은 기능을 제공해줍니다. 바로 슬라이싱(Slicing)입니다
2)문자열의 슬라이싱(Slicing)
💡슬라이싱의 기본 구조:
문자열명[시작 주소 : 끝 주소+1]
Slicing은 무엇인가를 "잘라낸다"는 의미입니다.
번거롭게 주소 하나하나를 일일이 인덱싱하여 통합하는 것이 아니라, 사용자가 선택한 범위 통쨰로 추출할 수 있는 것입니다. 다음처럼요
여기서 주의할 점은, 슬랑이싱에서 범위의 끝주소 입니다.
string[5:9] 의 의미는, string문자열의 5번주소 ~ 9번주소앞 까지 추출하라는 의미입니다.
그래서 만약 string[5:8]로 출력을 한다면, 8번 주소의 앞까지 추출되어 "les"가 추출되는 것이죠.
3)문자열 포매팅(Formatting)
만약 다음과 같은 문장들을 추출해야 한다고 가정해봅시다.
반복되는 구조를 가진 문자열들을 일일이 출력하는 것은 상당히 번거로울 것입니다.
이럴 때 문자열 안의 특정한 값만을 바꾸기만 하면 될 때 유용하게 쓰이는 것이 문자열 포매팅 기법입니다. 다음처럼요.
위처럼 변하는 특정한 값에 %d(정수형 포맷 코드)를 입력하고, 문자열 뒤에 %기호를 작성하고, 원하는 값을 작성하시면 됩니다.
그러면 다음과 같이 유지/보수가 굉장히 수월해짐을 알 수 있습니다!
꼭 숫자형만 포매팅할 수 있는 것은 아닙니다.
다음의 포맷코드 표를 보시고, 원하시는 자료형을 포매팅하시면 됩니다.
4)f문자열 포매팅(f-String Formatting)
파이썬 3.6 버전 부터는 f-문자열 포매팅을 사용할 수 있게 되었습니다. (3.6 미만 버전에서는 사용 불가하니 주의해 주세요!)
f 문자열 포매팅은 문자열 앞에 f접두사가 들어갑니다. 기본 용법은 다음과 같습니다.
f-String Formatting
```python
valiable_1 = " "
valiable_2 = " "
print(f"Hello, valiable_1 is {valiable_1}, and valiable_2 is {valiable_2}")
간단한 예시로 확인해보겠습니다.
이처럼, 문자열 포매팅과 f-문자열 포매팅 등을 통해 문자열을 보다 수월하기 관리할 수 있게 되었습니다!
### 5)문자열 관련 함수
문자열에 대한 기본적인 것들은 모두 알아보았으니, 이제 문자열에서 유용하게 쓰이는 함수에 대해 알아보겠습니다.
1\. 모든 문자 소문자화: **_문자열명.lower()_**
string = "Limitless Model"
print(string.lower())
>>>limitless model
2\. 모든 문자 대문자화: **_문자열명.upper()_**
string = "Limitless Model"
print(string.upper())
>>>LIMITLESS MODEL
3\. 문자열 길이 추출: **_len(문자열명)_**
string = "Limitless"
print(len(string))
>>>9
4\. 특정 문자 바꾸기: **_문자열명.replace(기존 문자, 대체 문자)_**
string = "Limitless Model"
print(string.replace("Model", "Python"))
>>>Limitless Python
5\. 특정 문자 주소 추출: **_문자열명.index()_**
string = "Limitless"
print(string.index("s")) #첫번째 s 주소 추출
print(string.index("s", index + 1)) # 첫번째 s 다음으로 나오는 s 주소 추출
>>>7
>>>8
6\. 특정 문자 출현 수 추출: **_문자열명.count()_**
string = "Limitless"
print(string.count("s"))
>>>2
```
'언어) Python' 카테고리의 다른 글
[Python] Python 자료형(6): 집합(Set)형 (0) | 2022.05.08 |
---|---|
[Python] Python 자료형(5): 딕셔너리(Dictionary)형 (0) | 2022.05.02 |
[Python] Python 자료형(4): 튜플(Tuple)형 (feat. 리스트형) (0) | 2022.05.01 |
[Python] Python 자료형(3): 리스트(List)형 (0) | 2022.05.01 |
[Python] Python 자료형(1) 숫자(Number)형과 연산자 (0) | 2022.04.28 |