์์ ํฌ์คํธ์์๋ ์ธ๊ธ์ ํ์ง๋ง, ๋ค๋ฅธ ์ธ์ด์ ๋ค๋ฅด๊ฒ ํ์ด์ฌ์ ๋ฌธ์์ ๋ฌธ์์ด์ ๊ตฌ๋ถํ์ง ์๋๋ค. ํ์ด์ฌ์ ๋ฌธ์์ด์ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ค์ํ ๋ฐ์ดํฐ ํ์ ์ด๋ค. ๋ฌธ์์ด์ ์์ ๋ฐ์ดํ(')๋ ํฐ ๋ฐ์ดํ("), ์ธ ๊ฐ์ ๋ฐ์ดํ(''')๋ก ๋๋ฌ์ธ์ธ ํ ์คํธ๋ก ํํ๋๋ค

str1 = '์ค๋๋ ์ฆ๊ฑฐ์ด ํ์ด์ฌ ์์
'
print(str1)
str2 = "์ค๋๋ ์ฆ๊ฑฐ์ด ํ์ด์ฌ ์์
"
print(str2)
str3 = '''์ ๋ฏผ์ฝฉ:
์ค๋ ์์
์ ๋ง ์ฌ๋ฐ๋ค์
๊ทธ๋ ์ฃ ?''' # '''๋ฅผ ์ฌ์ฉํ๋ฉด '''์์ ๊ธ์ ๋ชจ์ต ๊ทธ๋๋ก ์ถ๋ ฅ๋๋ค.
print(str3)
ํ์ด์ฌ์ ๋ฌธ์์ด์ ์ ๋์ฝ๋(Unicode) ๋ฌธ์์ ์ํ์ค๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋ฌธ์์ด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ณ ํด๋น ๊ฐ์ ๋ถ๋ณ(immutable)ํ ํน์ฑ์ ๊ฐ์ง๋ค. ํ์ด์ฌ์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ๊ณต์ ๋ฌธ์์ด ์ต์ ํ์ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ค๋ฃจ๋๋ก ์ค๊ณ๋์ด ์๋ค.
str1 = 'Hello'
str2 = 'Hello'
# 'Hello'์ ์ฃผ์๊ฐ ์ฌ์ฌ์ฉ๋์ด str2๊ฐ str1์ ์ ์ฅ๋ ์ฃผ์์ ๊ณต์ ๋จ
print(str1 is str2) # ์ถ๋ ฅ: True
is ์ฐ์ฐ์๋ ํ์ด์ฌ์์ ๋ ๊ฐ์ฒด์ ์๋ณ(identity)์ ๋น๊ตํ ๋ ์ฌ์ฉ๋๋ ์ฐ์ฐ์์ด๋ค. ๊ฐ์ฒด์ ์๋ณ์ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋ ์์น ์ฆ ์ฃผ์๋ฅผ ์๋ฏธํ๋ค. is ์ฐ์ฐ์๋ ๋ ๊ฐ์ฒด๊ฐ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ ์ฅ๋ผ ์๋์ง ์ฌ๋ถ๋ฅผ ํ๋จํ๋ค.
str1 = 'Hello'
str2 = 'Hi'
print(str1 is str2)
ํ์ด์ฌ์์ ๋ฌธ์์ด์ ๋ถ๋ณํ ๋ฐ์ดํฐ ํ์ ์ด๋ฏ๋ก, ๊ฐ์ ๋ณ์์ ๋ฌธ์์ด์ ์ฌํ ๋คํ๋ ๊ฒฝ์ฐ, ์๋ก์ด ๋ฌธ์์ด ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ณ ๋ณ์๋ ์๋ก์ด ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋ค. ์ฆ, ์ด์ ์ ๋ฌธ์์ด ๊ฐ์ฒด๋ ๋ณ๊ฒฝ๋์ง ์๋๋ค
a = 'Hello'
b = 'Python'
c = a + ', Python'
d = 'Hello'
print(id(a)) # ์ถ๋ ฅ: 140106299787056
print(id(b)) # ์ถ๋ ฅ: 140107349243376
print(id(c)) # ์ถ๋ ฅ: 140106299790896
print(id(d)) # ์ถ๋ ฅ: 140106299787056
# ํ์ด์ฌ์์ ๋ค๋ฃจ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ (์ค์ ์ฃผ์๋ X)
# a์ d์ ์ฃผ์๋ ๊ฐ์ง๋ง a์ c์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ ๋ค๋ฅด๋ค.
ํ์ด์ฌ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํด ์ฐธ์กฐ ์นด์ดํ (reference counting) ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ค. ์ด ๋ฉ์ปค๋์ฆ์ ๊ฐ์ฒด๊ฐ ์ผ๋ง๋ ๋ง์ ๋ณ์์ ์ํด ์ฐธ์กฐ๋๊ณ ์๋์ง๋ฅผ ์ถ์ ํ๋ค. ๊ฐ์ฒด์ ์ฐธ์กฐ ์นด์ดํธ๊ฐ 0์ด ๋๋ฉด ํด๋น ๊ฐ์ฒด๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ, ๊ฐ๋น์ง ์ปฌ๋ ์ (garbage collection)์ ์ํด ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋๋ค.
๋ฐ๋ผ์ ์ด์ ๋ฌธ์์ด ๊ฐ์ฒด์์ ๋ ์ด์ ์ด๋ ํ ๋ณ์๋ ์ฐธ์กฐํ์ง ์์ ๋, ํด๋น ๋ฌธ์์ด ๊ฐ์ฒด๋ ์ฐธ์กฐ ์นด์ดํธ๊ฐ 0์ด ๋๋ฉฐ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋์์ด ๋๋ค. ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์คํ๋๋ฉด ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ํ์ฌ ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ค.
๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ฐํํ๋ค.
text = 'Hello, Python'
print(len(text)) # ์ถ๋ ฅ: 13)
๋ ๋ฌธ์์ด์ ํฉ์ณ ์๋ก์ด ๋ฌธ์์ด ์์ฑํ๋ค.
name = '์ ๋ฏผ์ฝฉ'
age = '4์ด'
message = name + ', ' + age
print(message) # ์ถ๋ ฅ: ์ ๋ฏผ์ฝฉ, 4์ด
๋ฌธ์์ด์ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํ์ฌ ์๋ก์ด ๋ฌธ์์ด ์์ฑํ๋ค.
hamster = '๐น' * 10
print(hamster) # ์ถ๋ ฅ: ๐น๐น๐น๐น๐น๐น๐น๐น๐น๐น
๋ฌธ์์ด ๋ด๋ถ์ ๋ฌธ์์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ธํ๊ฑฐ๋ ์ฌ๋ผ์ด์ค ํ ์ ์๋ค.
๋ณ์๋ช [n] ์ด๋ฉด n๋ฒ ์ธ๋ฑ์ค์ ์ ๊ทผ, ๋ณ์๋ช [a:b]๋ฉด a์ธ๋ฑ์ค๋ถํฐ b์ง์ ๊น์ง ์ฌ๋ผ์ด์ฑํ๋ค.
str1 = '๋ฌธ์์ด ๋ด๋ถ์ ๋ฌธ์์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ๊ฑฐ๋ ์ฌ๋ผ์ด์คํ ์ ์์ต๋๋ค.'
print(str1)
# ์ธ๋ฑ์ฑ
print(str1[0]) # ์ถ๋ ฅ: ๋ฌธ
print(str1[1]) # ์ถ๋ ฅ: ์
print(str1[12]) # ์ถ๋ ฅ: ์ธ
print(str1[-1]) # ์ถ๋ ฅ: .
print(str1[-2]) # ์ถ๋ ฅ: ๋ค
# ์ฌ๋ผ์ด์ฑ
print(str1[0:3]) # ์ถ๋ ฅ: ๋ฌธ์์ด
print(str1[8:16]) # ์ถ๋ ฅ: ๋ฌธ์์ ์ธ๋ฑ์ค๋ฅผ
print(str1[:16]) # ์ถ๋ ฅ: ๋ฌธ์์ด ๋ด๋ถ์ ๋ฌธ์์ ์ธ๋ฑ์ค๋ฅผ
print(str1[8:]) # ์ถ๋ ฅ: ๋ฌธ์์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ๊ฑฐ๋ ์ฌ๋ผ์ด์คํ ์ ์์ต๋๋ค.
print(str1[:]) # ์ถ๋ ฅ: ๋ฌธ์์ด ๋ด๋ถ์ ๋ฌธ์์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ๊ฑฐ๋ ์ฌ๋ผ์ด์คํ ์ ์์ต๋๋ค.
๋ฌธ์์ด ๋ฉ์๋๋ ๋ฌธ์์ด ๊ฐ์ฒด์ ์ ์ฉ๋๋ ํจ์๋ก, ๋ฌธ์์ด์ ์กฐ์ํ๊ฑฐ๋ ๋ณํํ๋ ๋ค์ํ ์์ ์ ์ํํ ์ ์๊ฒ ํด์ค๋ค
upper()์ ๋ฌธ์์ด์ ๋๋ฌธ์๋ก, lower()์ ์๋ฌธ์๋ก ๋ณํํ๋ค
text = 'Hello, Python'
print(text.upper()) # ์ถ๋ ฅ: HELLO, PYTHON
print(text.lower()) # ์ถ๋ ฅ: hello, python
ํน์ ๋ฌธ์์ด์ ๋ฑ์ฅ ํ์๋ฅผ ํ์ธํ๋ค.
text = 'Hello, Python'
print(text.count('o')) # ์ถ๋ ฅ: 2
print(text.count('ll')) # ์ถ๋ ฅ: 1
ํน์ ๋ถ๋ถ ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ ๋ฑ์ฅ ์์น(์ธ๋ฑ์ค)๋ฅผ ํ์ธํ๋ค.
text = 'Hello, Python'
print(text.find('o')) # ์ถ๋ ฅ: 4
print(text.find('ll')) # ์ถ๋ ฅ: 2
print(text.find('z')) # ๋ฌธ์์ด ๋ด์ ์์ผ๋ฉด -1; -1
print(text.rfind('o')) # ๋ ๋ฒ์งธ o ์์น; 11
print(text.find('o', 6)) # ์ธ๋ฑ์ค 6 ์ดํ๋ถํฐ; 11
replace('a', 'b'): ๋ฌธ์์ด 'a'๋ฅผ ๋ฌธ์์ด 'b'๋ก ๋์ฒดํ๋ค
text = 'Hello, Python'
print(text.replace('Python', 'World')) # ์ถ๋ ฅ: Hello, world
๋ฌธ์์ด์ ์์ชฝ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๋ค.
text = ' Hello, Python'
print(text) # ์ถ๋ ฅ: Hello, Python
print(text.strip()) # ์ถ๋ ฅ: Hello, Python
๊ดํธ ์์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ๋ถ๋ฆฌํด ๋ฆฌ์คํธ๋ก ์ ์ฅํ๋ค. ๊ธฐ๋ณธ๊ฐ์ ๋์ด์ฐ๊ธฐ(' ')์ด๋ค.
text = '์ ๋ฏผ์ฝฉ ์ ํ์ฝฉ ์ํ์ฝฉ ์ ๋น์ฝฉ'
names = text.split() # split(' ')
print(names) # ์ถ๋ ฅ: ['์ ๋ฏผ์ฝฉ', '์ ํ์ฝฉ', '์ํ์ฝฉ', '์ ๋น์ฝฉ']
text = '์ ๋ฏผ์ฝฉ,์ ํ์ฝฉ,์ํ์ฝฉ,์ ๋น์ฝฉ'
names = text.split(',')
print(names) # ์ถ๋ ฅ: ['์ ๋ฏผ์ฝฉ', '์ ํ์ฝฉ', '์ํ์ฝฉ', '์ ๋น์ฝฉ']
๋ฌธ์์ด ๊ธ์ ์ฌ์ด์ฌ์ด์ ํน์ ๋ฌธ์์ด์ ์ฝ์ ํ๋ค.
text = 'Hello'
print('๐น'.join(text)) # ์ถ๋ ฅ: H๐นe๐นl๐นl๐นo
์ ๋์ฌ์ ์ ๋ฏธ์ฌ๋ฅผ ํ์ธํ๋ค. bool๊ฐ์ด ๋ฐํ๋๋ค.
text = 'Hello, Python'
print(text.startswith('Hello')) # ์ถ๋ ฅ: True
print(text.startswith('Python')) # ์ถ๋ ฅ: False
print(text.endswith('Python')) # ์ถ๋ ฅ: True