에듀테크 프로젝트 대시보드
문자열 기초
문자열은 유니코드 문자의 불변 시퀀스입니다. 인덱싱·슬라이싱 규칙은 리스트와 같습니다.
a = "큰따옴표"
b = '작은따옴표' # 둘은 동등
c = "그는 \"안녕\"이라 했다" # 이스케이프
d = '그는 "안녕"이라 했다' # 다른 따옴표로 감싸면 편함
multi = """여러 줄
문자열"""
path = r"C:\Users\name" # raw 문자열: \ 를 그대로
# 인접한 리터럴은 자동 연결
msg = ("긴 문장을 "
"여러 줄로 나눠 쓰기")| 이스케이프 | 의미 |
|---|---|
\n | 줄바꿈 |
\t | 탭 |
\\ | 역슬래시 |
\" \' | 따옴표 |
\u00c0 | 유니코드 코드포인트 |
s = "PYTHON"
# 012345
# -654321
s[0] # => 'P'
s[-1] # => 'N'
s[1:4] # => 'YTH' (끝 인덱스 미포함)
s[:3] # => 'PYT'
s[3:] # => 'HON'
s[::2] # => 'Pto'... 실제 => 'PTO' (스텝 2)
s[::-1] # => 'NOHTYP' (뒤집기 관용구)
len(s) # => 6"abc"[1:99] => 'bc'step 이 음수면 역방향s = "hello"
# s[0] = "H" # TypeError
s = "H" + s[1:] # => 'Hello' (새 객체)
# 문자 단위 조작은 리스트로 변환 후
chars = list("hello")
chars[0] = "H"
s = "".join(chars)"ab" + "cd" # => 'abcd'
"=" * 20 # => '===================='
"y" in "python" # => True
"z" not in "python" # => True
# 반복 연결은 join 이 훨씬 빠름 (O(n) vs O(n^2))
parts = ["a", "b", "c"]
"-".join(parts) # => 'a-b-c' (권장)for w in words: text += w 는 매번 새 문자열 생성 → 느림"".join(buf)for ch in "abc":
print(ch) # a / b / c
ord("A") # => 65 (문자 → 코드포인트)
chr(0xAC00) # => '가' (코드포인트 → 문자)
"Hello".encode("utf-8") # => b'Hello' (bytes)
b"Hello".decode("utf-8") # => 'Hello'