193 lines
5.1 KiB
Markdown
193 lines
5.1 KiB
Markdown
# 문자열
|
|
|
|
파이썬에서 문자열은 텍스트 데이터를 다루는 데 있어 가장 기본적인 자료형이라고 할 수 있습니다.
|
|
|
|
- str
|
|
|
|
문자열은 홑따옴표 또는 쌍따옴표로 묶어서 표현합니다. 삼중 따옴표(홑따옴표 또는 쌍따옴표)로 여러 줄 문자열을 표현할 수 있습니다.
|
|
|
|
## 문자열의 생성
|
|
|
|
```python
|
|
# 작은따옴표 사용
|
|
string1 = 'Hello, world!'
|
|
|
|
# 큰따옴표 사용
|
|
string2 = "Python is fun!"
|
|
|
|
# 여러 줄 문자열 (""" 또는 ''' 사용)
|
|
multiline_string = """
|
|
This is a multi-line string.
|
|
You can use triple quotes to create them.
|
|
"""
|
|
```
|
|
|
|
## 인덱싱
|
|
문자열의 특정 문자에 접근하는 방법입니다. 파이썬은 0부터 시작하는 인덱스를 사용합니다.
|
|
|
|
```python
|
|
string = "hello"
|
|
print(string[0]) # h 출력
|
|
print(string[-1]) # o 출력 (뒤에서 첫 번째 문자)
|
|
```
|
|
|
|
## 슬라이싱
|
|
문자열의 일부분을 추출하는 방법입니다.
|
|
|
|
```python
|
|
string = "hello world"
|
|
print(string[1:5]) # ello 출력 (1번 인덱스부터 5번 인덱스 바로 앞까지)
|
|
```
|
|
|
|
## 연산
|
|
`+` 연산자를 사용하여 문자열을 연결할 수 있습니다.
|
|
```python
|
|
|
|
```
|
|
|
|
`*` 연산자를 사용하여 문자열을 반복할 수 있습니다.
|
|
```python
|
|
repeat_string = "hello" * 3 # hellohellohello
|
|
```
|
|
|
|
|
|
## 문자열 메서드
|
|
파이썬은 문자열을 다루기 위한 다양한 메소드를 제공합니다.
|
|
|
|
- replace(바꿀문자열, 새문자열)
|
|
|
|
문자열 내의 특정 문자열을 다른 문자열로 바꿈
|
|
|
|
- translate()
|
|
|
|
문자열 내의 문자를 치환합니다.
|
|
|
|
```python
|
|
table = str.maketrans('aeiou', 'AEIOU')
|
|
a = 'i like an apple'.translate(table) # I lIkE An ApplE
|
|
```
|
|
|
|
- split()
|
|
|
|
문자열을 특정 구분자를 기준으로 나누어 리스트로 반환. 기본적으로, 공백을 기준으로 문자열을 분리합니다.
|
|
|
|
```python
|
|
a = 'apple,orange,mango,banana'.split(',')
|
|
```
|
|
|
|
- join(리스트)
|
|
|
|
리스트의 요소들을 하나의 문자열로 합침
|
|
|
|
```python
|
|
'-'.join(['apple','orange','mango','banana'])
|
|
```
|
|
|
|
- upper(), lower(), capitalize(), casefold(), swapcase()
|
|
|
|
문자열을 대문자 또는 소문자로 변환
|
|
|
|
- strip(), lstrip(), rstrip()
|
|
|
|
문자열의 왼쪽, 오른쪽, 또는 양쪽의 공백을 제거합니다. 매개변수에 제거할 문자목록 지정할 수도 있습니다.
|
|
|
|
```python
|
|
'...hello'.strip('.')
|
|
```
|
|
|
|
- endswith(), startswith()
|
|
|
|
- ljust(길이), rjust(길이), center(길이)
|
|
|
|
정렬
|
|
|
|
```python
|
|
'apple'.ljust(10) # 'apple '
|
|
```
|
|
|
|
- zfill(길이)
|
|
|
|
지정된 길이 맞춰서 0으로 채웁니다.
|
|
|
|
- find(찾을문자열), rfind()
|
|
|
|
문자열 내에서 특정 문자열의 위치를 찾음. 주어진 문자열이 처음 나타나는 인덱스를 반환하며, 찾는 문자열이 없으면 -1을 반환합니다.
|
|
|
|
- index(), rindex()
|
|
|
|
`find()`와 마찬가지로 찾는 문자열의 인덱스를 반환하지만, 문자열을 찾지 목한 떄에는 오류가 발생됩니다.
|
|
|
|
- count(문자열)
|
|
|
|
주어진 문자열의 갯수를 셉니다.
|
|
|
|
- encode(), decode()
|
|
|
|
- isalpha(), isdigit(), isnumeric(), isupper(), islower()
|
|
|
|
## 형식화 문자열
|
|
|
|
```python
|
|
name = 'Charlie'
|
|
a = 'Hello, %s.' % name
|
|
|
|
age = 14
|
|
b = "I'm %d years old." % age
|
|
|
|
value = 3.3
|
|
c = 'The price is %f dollars.' % value
|
|
c = 'The price is %.2f dollars.' % value # 소수점 이하 자릿수를 지정
|
|
|
|
d = '%s is %d years old.' % (name, age) # 여러 개일 떄에는 괄호로 묶습니다.
|
|
```
|
|
|
|
## format()
|
|
|
|
format 함수는 파이썬에서 문자열 내에 변수나 값을 삽입하여 다양한 형식의 문자열을 생성하는 데 사용됩니다. 즉, 미리 정의된 틀에 값을 채워 넣는다고 생각하면 됩니다.
|
|
|
|
```python
|
|
문자열 = "안녕하세요, {}입니다. 저는 {}살입니다.".format(이름, 나이)
|
|
```
|
|
위 예시에서 {} 부분에 format() 함수의 인수가 차례대로 대입됩니다.
|
|
|
|
{} 안에 숫자를 넣어 인수의 순서를 지정할 수 있습니다.
|
|
|
|
```python
|
|
print("{1} {0}".format("world", "Hello")) # Hello world 출력
|
|
```
|
|
{} 안에 키워드를 넣어 인수를 지정할 수 있습니다.
|
|
|
|
```python
|
|
print("이름: {name}, 나이: {age}".format(name="홍길동", age=30))
|
|
```
|
|
숫자를 특정 형식으로 출력할 수 있습니다.
|
|
|
|
```python
|
|
print("원주율은 {:.2f}입니다.".format(3.141592)) # 원주율은 3.14입니다.
|
|
```
|
|
|
|
## f-string
|
|
Python 3.6이상에서는 format 함수와 비슷한 기능을 더 간결하게 사용할 수 있는 방법이 있습니다.
|
|
|
|
문자열 앞에 포맷 지시자('f')를 붙여주면 됩니다.
|
|
|
|
```python
|
|
name = "홍길동"
|
|
age = 30
|
|
print(f"안녕하세요, {name}입니다. 저는 {age}살입니다.")
|
|
```
|
|
```python
|
|
# 상품 정보 출력
|
|
product = {"name": "아이폰 14", "price": 1500000, "stock": 100}
|
|
print(f"상품명: {product['name']}, 가격: {product['price']}원, 재고: {product['stock']}개")
|
|
```
|
|
|
|
```python
|
|
import datetime
|
|
today = datetime.datetime.now()
|
|
print(f"오늘은 {today:%Y년 %m월 %d일}입니다.")
|
|
```
|
|
|
|
## 문자열은 불변(immutable)
|
|
한번 생성된 문자열은 변경할 수 없습니다. 문자열을 수정하려면 새로운 문자열을 생성해야 합니다.
|