오늘도 개발

파이썬 문자열(String) 본문

웹 프로그래밍/Python3

파이썬 문자열(String)

Sueeeeeee 2022. 6. 1. 22:25

문자열(String)이란?

문자의 집합.

"abc"
"123"

문자열을 만드는 네 가지 방법

1) "문자열"

2) '문자열'

3) """문자열"""

4) '''문자열'''

문자열 안에 따옴표가 들어가는 경우

1) 문자열에 작은따옴표가 들어가는 경우 - 큰 따옴표로 둘러쌈

"I'm new to Python."

2) 문자열에 큰따옴표가 들어가는 경우 - 작은 따옴표로 둘러쌈

'I said "I am new to Python."'

3) 작은 따옴표, 큰 따옴표 둘 다 들어가는 경우 - \ 사용

'I said, "I\'m new to Python"'

문자열이 여러 줄인 경우

1) \n 삽입

print("I'm new to Python.\nHow about you?")

 

2)'''나 """사용

s = '''
I'm new to Python.
How about you?
'''

print(s)

문자열 길이 구하기

len() 사용

print(len('python')) # 6

문자열 연산

더하기(Concatenation)

+ 사용 : 문자열 연결

a = 'Hello'
b = '!'

print(a + b) # Hello!

 

곱하기

* 사용 : 문자열 반복

a = 'Hello'

print(a * 2) # HelloHello

문자열 인덱싱/슬라이싱

인덱싱

첫 요소의 인덱스는 0, 끝 요소의 인덱스는 -1로 시작

a = 'Python'

print(a[0])
# P

print(a[-1])
# n

 

슬라이싱

[:]사용. [0:2]에서 2번 요소는 포함 안 됨.

리스트를 슬라이싱하면 새 주소에 슬라이싱한 새 객체를 생성한다.

a = 'Python!'

print(id(a))
# 4373814896

print(id(a[:2]))
# 4373885360

문자열은 immutable한 자료형이기 때문에 인덱스를 사용하여 문자열을 수정할 수 없다.

대신 슬라이싱으로 문자열을 새로 만드는 방법을 사용할 수 있다.

a = 'potapo'

b = a[:4] + 't' + a[-1:]
print(b)
# potato

문자열 포매팅(Formatting)

문자열 포매팅이란? 문자열 안에 어떤 값을 넣는 방법

 

문자열 포맷 코드 사용하기

%s : 원래 문자열(string), but 어떤 형태 값이든 삽입 가능

%c : 문자 1개(character)

%d : 정수(Integer)

%f : 부동소수(floating-point), 디폴트로 소수점 이하 6자리까지 표시

%o : 8진수

%x : 16진수

%% : 문자 %를 입력할 때

# 정수 대입
print("I am %d years old." % 100)
# I am 100 years old.

# 문자열 대입
print("My name is %s." % "Sue")
# My name is Sue.

# 변수 대입
num = 5
print("I have %d books." % num)
# I have 5 books.

# 2개 이상 값 넣기
month = 'June'
day = 4
print("Today is %s %dth." % (month, day))
# Today is June 4th.

# %와 포매팅 연산자 같이 쓰기
print("I'm %d%% sure." % 99)
# I'm 99% sure.

포맷 코드와 숫자 함께 사용하기

정렬하기 / 공백 만들기 

# 대입할 값을 10글자로 만들고 우측정렬
print("%10s, Sue!" % 'hi')
#         hi, Sue!

# 대입할 값을 10글자로 만들고 좌측정렬
print("%-10s, Sue!" % 'hi')
# hi        , Sue!

소수점 표현하기

# 기본적으로 소수점 이하 6번째 자리까지 표시
print("%f" % 0.1234567)
# 0.123457 (반올림)

# 소수점 이하 2번째 자리까지 표시
print("%0.2f" % 0.1234)
# 0.12

정렬/공백 만들면서 소수점 표현하기

# 대입할 값을 10글자로 만들고 우측정렬 
print("It's %10.2f!" % 0.1234)
# It's       0.12!

# 대입할 값을 10글자로 만들고 좌측정렬
print("It's %-10.2f!" % 0.1234)
# It's 0.12      !

format 함수 사용하기

문자열 포맷 코드 사용하는 것 보다 조금 더 발전한 스타일

# 숫자 대입하기
print("I am {0} years old.".format(100))
# I am 100 years old.

# 문자 대입하기
print("My name is {0}.".format("Sue"))
# My name is Sue.

# 변수 대입하기
num = 5
print("I have {0} books.".format(num))
# I have 5 books.

# 2개 이상 값 넣기
month = 'June'
day = 4
print("Today is {0} {1}th.".format(month, 4))
# Today is June 4th.

# 이름으로 넣기
print("Today is {month} {day}th.".format(month='June', day=4))
# Today is June 4th.

# 인덱스, 이름 혼용해서 넣기
print("Today is {0} {day}th.".format('June', day=4))
# Today is June 4th.

포맷 함수와 숫자 함께 사용하기

정렬하기 / 공백 만들기 

# 대입할 값을 10글자로 만들고 우측정렬
print("{0:>10}, Sue!".format('hi'))
#         hi, Sue!

# 대입할 값을 10글자로 만들고 좌측정렬
print("{0:<10}, Sue!".format('hi'))
# hi        , Sue!

# 대입할 값을 10글자로 만들고 가운데정렬
print("{0:^10}, Sue!".format('hi'))
#     hi    , Sue!

공백 채우기

print("{0:=<10}, Sue!".format('hi'))
# hi========, Sue!

print("{0:?<10}, Sue!".format('hi'))
# hi????????, Sue!

소수점 표현하기

# 소수점 둘째 자리까지 표시하기
print("{0:0.2f}".format(0.1234))
# 0.12

# 소수점 둘째 자리까지 표시하면서 우측정렬하기 1
print("The number is {0:10.2f}!".format(0.1234))
# The number is       0.12!

# 소수점 둘째 자리까지 표시하면서 우측정렬하기 2
print("The number is {0:<10.2f}!".format(0.1234))
# The number is 0.12      !

# 소수점 둘째 자리까지 표시하면서 우측정렬하고 문자 삽입
print("The number is {0:=<10.2f}!".format(0.1234))
# The number is 0.12======!

{, }, 문자 표현하기

print("{0} are {{}}.".format('Curly braces'))
# Curly braces are {}.

1000단위마다 콤마 넣기

price = 10000
print("{0:,}".format(price))
# 10,000

f 문자열 포매팅

파이썬 3.6버전부터 도입된 포매팅 방식.

name = 'Sue'
age = 100
print(f"My name is {name}. I'm {age + 1} years old")
# My name is Sue. I'm 101 years old.

# 정렬하기
greeting = 'hi'
print(f"{greeting:=<10}, Sue!")
# ========hi, Sue!

# 소수점 표현하기
x = 0.1234
print(f"{x:0.2f}")
# 0.12

문자열 관련 함수

count : 문자 개수 세기

a = 'Python'
print(a.count())
# 6

find / index : 문자 위치 찾기. find는 찾는 것 없으면 -1 반환, index는 오류남

a = 'python'
print(a.find('p')) # 0
print(a.index('p')) # 0

join : 문자 사이에 문자 삽입. 리스트에도 사용 가능

a = "!".join('hello')
print(a)
# h!e!l!l!o

a = ['sue', 'is', 'programming']
print(' '.join(a))
# sue is programming

upper / lower : 대소문자 변경

a = 'hi'
print(a.upper())
# HI

b = 'PYTHON'
print(b.lower())
# python

lstrip / rstrip / strip : 왼쪽/오른쪽/양쪽의 한 칸 이상 연속되는 공백 삭제

a = "     hi     "
print(a.rstrip())
#      hi

print(a.lstrip())
# hi

print(a.strip())
# hi

replace : 문자열 교체

a = 'I hate python'
print(a.replace('hate', 'love'))
# I love python

split : 문자열 나누기

a = 'sue! is! programming'

# 디폴트로 공백을 기준으로 분리
print(a.split())
# ['sue!', 'is!', 'programming']

# 분리할 문자 지정 가능
print(a.split('!'))
# ['sue', ' is', ' programming']

 

 

 

 

참고

점프 투 파이썬 - 02-2 문자열 자료형

파이썬 코딩 도장 Unit 9.1 문자열 사용하기