본문 바로가기
STUDY/PYTHON

[Python] 2. 문자형

by 짤롱 2024. 9. 21.
728x90

문자형(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