문자형(String)
1. 문자열 사용
1.1 기본 표현
- 큰따옴표(" ") 혹은 작은따옴표(' ')를 사용해 출력
- 여러 줄을 표현하기 위해서는 따옴표 세 개(""" """ 혹은 ''' ''')를 나열하거나 \n을 사용
- 큰따옴표와 작은따옴표를 혼합해서 사용하지 않기
# 기본 표현
# 큰따옴표 혹은 작은따옴표 사용
print("Hello World") # Hello World
print('Hello World') # Hello World
# 여러 줄 표현 1
# 큰따옴표 사용
a = """큰따옴표 혹은 작은따옴표 세 개를
사용하면 여러 줄을 출력할 수 있음"""
print(a) # 큰따옴표 혹은 작은따옴표 세 개를
# 사용하면 여러 줄을 출력할 수 있음
# 여러 줄 표현 2
# 작은따옴표 사용
b = '''큰따옴표 혹은 작은따옴표 세 개를
사용하면 여러 줄을 출력할 수 있음'''
print(b) # 큰따옴표 혹은 작은따옴표 세 개를
# 사용하면 여러 줄을 출력할 수 있음
# 여러 줄 표현 3
# \n 사용
c = "여러 줄을 다른\n 방법으로도\n출력할 수 있음"
print(c) # 여러 줄을 다른
# 방법으로도
# 출력할 수 있음
1.2 특수 문자(" ", ' ', \) 표현
- 큰따옴표를 출력하기 위해서는 작은따옴표 사용
- 작은따옴표를 출력하기 위해서는 큰 따옴표 사용
- 따옴표를 출력하기 위해서는 \" 혹은 \' 를 사용
- 문자열에 \를 나타내기 위해서는 \ 두 번 사용
# 특수 문자 표현
# 큰따옴표(" ") 표현 - 작은따옴표(' ') 사용
a = '문자열 안에 큰따옴표(" ") 출력하기'
print(a) # 문자열 안에 큰따옴표(" ") 출력하기
# 작은따옴표(' ') 표현 - 큰따옴표(" ") 사용
b = "문자열 안에 작은따옴표(' ') 출력하기"
print(b) # 문자열 안에 작은따옴표(' ') 출력하기
# 따옴표 표현 - \" 혹은 \'를 사용
c = "문자열에 \' 혹은 \" 사용으로 따옴표 출력하기"
print(c) # 문자열에 ' 혹은 " 사용으로 따옴표 출력하기
# 특수 문자 \ 표현
d = "문자열에 \\ 혹은 \\\사용으로 특수 문자 출력하기"
print(d) # 문자열에 \ 혹은 \\사용으로 특수 문자 출력하기
1.3 문자열 나열
- 콤마(,)를 사용하여 구분하여 나열하면 튜플 형태로 출력
- 콤마(,)를 사용하지 않고 나열하면 합쳐진 결과 출력
# 콤마(,)로 구분 - 튜플 형태
a = 'Hello', 'World'
print(a) # ('Hello', 'World')
# 콤마(,)없이 사용
b = "Hello" "World"
print(b) # HelloWorld
2. 문자열 연산
- 문자열 + 문자열 = 문자열 결합
- 문자열 * 정수 = 문자열 반복
- 문자열에 음수나 0을 곱하면 문자열 제거
# 문자열 변수 값 선언
a = "Hello"
b = "World"
# 문자열 결합
print(a + " " + b) # Hello World
# 문자열 반복
print(a * 5) # HelloHelloHelloHelloHello
# 문자열 제거
print(a * 0) #
print(a * -5) #
print(a * -1.5) # can't multiply sequence by non-int of type 'float'
3. 문자열 표현
3.1 format 메소드
- "문자열".format() 혹은 '문자열'.format()
- 문자열 안에 { }를 사용하여 변수 값 출력
- { }에 위치를 지정하지 않는 경우, 순서대로 출력
- { }에 위치를 지정한 경우, 지정 순서에 맞춰 출력
- 출력 형태(소수점 자리수, 정렬 방식 등)를 제어 가능
# 문자열 표현 - 문자열.format()
print("이름:{}, 연도:{}, 점수:{}".format("홍길동", 2024, 95)) # 이름:홍길동, 연도:2024, 점수:95
# 문자열 변수 값 선언
name = "홍길동"
year = 2024
score = 1234.5678
# 확인
print("이름:{}, 연도:{}, 점수:{}".format(name, year, score)) # 이름:홍길동, 연도:2024, 점수:1234.5678
print("이름:{0}, 연도:{1}, 점수:{2}".format(name, year, score)) # 이름:홍길동, 연도:2024, 점수:1234.5678
# 출력 형태 변경
# 천단위 구분
print("{:,}".format(10000000)) # 10,000,000
# 소수점 자리수 제한 - 소수점 5번째 자리까지 표현
print("{:.5f}".format(12.3456789)) # 12.34568
# 기본 정렬 - 문자 왼쪽 정렬, 숫자 오른쪽 정렬
print("[{0:7}] [{1:7}]".format("홍길동", 500)) # [홍길동 ] [ 500]
# 오른쪽, 왼쪽 정렬 - >: 오른쪽 정렬, <: 왼쪽 정렬
print("[{0:>7}] [{1:<7}]".format("홍길동", 500)) # [ 홍길동] [500 ]
# 가운데 정렬
print("[{0:^7}] [{1:^7}]".format("홍길동", 500)) # [ 홍길동 ] [ 500 ]
# 공백을 다른 문자로 채우기
print("[{0:*^7}] [{1:-^7}]".format("홍길동", 500)) # [**홍길동**] [--500--]
3.2 f-string
- f"문자열" 혹은 f'문자열'
- 문자열 안에 { }를 사용하여 변수 값 출력
# 문자열 변수 값 선언
name = "홍길동"
year = 2024
score = 1234.5678
# 확인
print(f"이름:{name}, 연도:{year}, 점수:{score}") # 이름:홍길동, 연도:2024, 점수:1234.5678
print(f"{year}년도 {name}의 점수는 {score:,.2f}") # 2024년도 홍길동의 점수는 1,234.57
4. 문자열 조회
- 인덱싱(Indexing) : 정수형 위치 인덱스로 원하는 요소 조회
- 슬라이싱(Slicing) : 범위를 지정해 일정 범위 요소 조회
- len()함수로 문자 개수 확인 가능
- 인덱스 값은 0부터 시작
슈 | 퍼 | 주 | 니 | 어 | |
순방향 인덱스 | 0 | 1 | 2 | 3 | 4 |
역방향 인덱스 | -5 | -4 | -3 | -2 | -1 |
# 문자열 변수 값 선언
s = "SUPER JUNIOR WITH ELF"
# 0123456789
# 문자열 인덱싱
print(s[3]) # E
print(s[-5]) # H
print(s[0]) # S
# 문자열 슬라이싱
print(s[0:3]) # SUP
print(s[-5:]) # H ELF
print(s[5:10]) # JUNI
print(s[5:]) # JUNIOR WITH ELF
print(s[:5]) # SUPER
5. 문자열 메소드(Method)
5.1 대/소문자 변환
- capitalize() : 문장의 첫 문자만 대문자로 변환
- title() : 단어 첫 문자만 대문자로 변환
- upper() : 모든 문자를 대문자로 변환
- lower() : 모든 문자를 소문자로 변환
# 문자열 변수 값 선언
s = "Super Junior"
# 확인
print(s.capitalize()) # Super junior
print(s.title()) # Super Junior
print(s.upper()) # SUPER JUNIOR
print(s.lower()) # super junior
5.2 자리수 지정 및 정렬
- rjust(x) : 지정한 x 만큼의 자리수를 확보한 후 오른쪽 정렬
- ljust(x) : 지정한 x 만큼의 자리수를 확보한 후 왼쪽 정렬
- center(x) : 지정한 x 만큼의 자리수를 확보한 후 가운데 정렬
# 문자열 변수 값 선언
s = "Super Junior"
# 확인
print("[" + s.rjust(15) + "]") # [ Super Junior]
print("[" + s.ljust(15) + "]") # [Super Junior ]
print("[" + s.center(15) + "]") # [ Super Junior ]
5.3 변경 및 제거
- replace(x, y) : 문자열에 포함된 문자열 x를 문자열 y로 변경
- strip() : 문자열에서 양쪽 공백 혹은 특수 문자 제거
- lstrip() : 문자열에서 왼쪽 공백 제거
- rstrip() : 문자열에서 오른쪽 공백 제거
# 문자열 변수 값 선언
s = "Superjunior"
# 문자열 변경
print(s.replace("junior", " Junior")) # Super Junior
# 양쪽 공백 제거
print(" ELF ".strip()) # ELF
# 특수 문자 제거
print("*-*ELF+_+".strip("*+_-")) # ELF
# 왼쪽 공백 제거
print(" ELF ".lstrip()) # ELF
# 오른쪽 공백 제거
print(" ELF ".rstrip()) # ELF
5.4 분리와 연결
- split(x) : x를 구분자로 하여 문자열 분리 후 리스트로 변환
기본 구분자는 공백을 포함한 스페이스(\n, \t 등)
- x.join(s) : x를 구분자로 하여 요소들을 연결한 문자열 변환
split()와 반대 역할을 담당
# 문자열 변수 값 선언
s1 = "Super Junior \n with ELF"
# 문자열 분리
print(s1.split()) # ['Super', 'Junior', 'with', 'ELF']
# 문자열 변수 값 선언
s2 = "2024-09-21"
# 문자열 분리
year = s2.split("-")[0]
month = s2.split("-")[1]
day = s2.split("-")[2]
# 확인
print("오늘은", year, "년", month, "월", day, "일") # 오늘은 2024 년 09 월 21 일
# 중간에 특정 문자열 삽입
s3 = "SUPER JUNIOR"
s3 = "_".join(s3)
# 확인
print(s3) # S_U_P_E_R_ _J_U_N_I_O_R
# 리스트 선언
my_list = ["2024", "09", "21"]
# 문자열 연결
s4 = "-".join(my_list)
# 확인
print(s4) # 2024-09-21
5.5 구성 확인 및 찾기
- isalpha() : 문자열이 알파벳으로만 구성되어 있는지 확인
- isdecimal() : 문자열이 정수 형태인지 확인
- isdigit() : 문자열이 숫자로만 구성되어 있는지 확인
- islower() : 문자열이 소문자로만 구성되어 있는지 확인
- isupper() : 문자열이 대문자로만 구성되어 있는지 확인
- find(x) : 왼쪽부터 문자열 x를 찾고 위치 반환
- rfind(x) : 오른쪽부터 문자열 x를 찾고 위치 반환
참고)
문자열 메소드 변환 결과를 반영하려면 반환 값을 변수에 대입
'STUDY > PYTHON' 카테고리의 다른 글
[Python] 5. 딕셔너리 (0) | 2024.11.10 |
---|---|
[Python] 4. 튜플 & 집합 (3) | 2024.11.09 |
[Python] 3. 리스트 (0) | 2024.11.08 |
[Python] 1. 연산자와 기본 자료형(2) (2) | 2024.09.16 |
[Python] 1. 연산자와 기본 자료형(1) (1) | 2024.09.16 |