
Python 문자열 기본 개념
Python에서 문자열은 따옴표로 둘러싸인 문자의 집합을 의미한다. 문자열은 Python 프로그래밍에서 텍스트 데이터를 처리하는 핵심 데이터 타입이며, 다양한 내장 메서드와 기능을 제공한다.
문자열 리터럴은 단일 따옴표나 이중 따옴표로 생성할 수 있으며, 두 방식 모두 동일한 결과를 만들어낸다. 문자열 내부에 따옴표를 포함해야 하는 경우에는 서로 다른 따옴표를 사용하거나 이스케이프 문자를 활용한다.
문자열 생성 방법
Python에서 문자열을 생성하는 가장 기본적인 방법은 따옴표를 사용하는 것이다. 단일 따옴표와 이중 따옴표 모두 문자열 생성에 사용할 수 있다.
print("Hello")
print('Hello')
두 코드 모두 “Hello”를 출력한다. 문자열 내부에 따옴표를 포함해야 하는 경우에는 다른 종류의 따옴표로 감싸거나 이스케이프 문자를 사용한다.
print("It's alright")
print("He is called 'Johnny'")
print('He is called "Johnny"')
여러 줄 문자열
Python에서는 삼중 따옴표를 사용하여 여러 줄에 걸친 문자열을 생성할 수 있다. 이 방식은 긴 텍스트나 문서 문자열을 작성할 때 특히 유용하다.
a = """Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua."""
print(a)
삼중 따옴표를 사용한 문자열에서는 실제 줄바꿈이 문자열에 포함되며, 출력 시에도 그대로 반영된다.
문자열은 배열
Python에서 문자열은 본질적으로 문자의 배열과 같다. 각 문자는 인덱스를 통해 접근할 수 있으며, 인덱스는 0부터 시작한다.
a = "Hello, World!"
print(a[1])
위 코드는 문자열에서 인덱스 1에 위치한 문자 “e”를 출력한다. 문자열의 각 문자에 개별적으로 접근할 수 있다는 특성은 텍스트 처리에서 매우 중요한 기능이다.
문자열 반복문
문자열의 각 문자를 순회하기 위해 for 반복문을 사용할 수 있다. 이는 문자열의 모든 문자를 하나씩 처리해야 하는 경우에 활용된다.
for x in "banana":
print(x)
위 코드는 “banana” 문자열의 각 문자를 한 줄씩 출력한다. 문자열 반복문은 텍스트 분석이나 문자 단위 처리에서 자주 사용되는 패턴이다.
문자열 길이
len() 함수를 사용하여 문자열의 길이를 확인할 수 있다. 문자열 길이는 공백과 특수 문자를 포함한 모든 문자의 개수를 의미한다.
a = "Hello, World!"
print(len(a))
위 코드는 13을 출력한다. 문자열 길이 확인은 입력 검증, 텍스트 처리, 데이터 분석 등 다양한 상황에서 필요한 기본 연산이다.
문자열 검색
특정 문자나 문자열이 다른 문자열에 포함되어 있는지 확인하기 위해 in 키워드를 사용한다. 이는 불린 값을 반환하며, 텍스트 검색과 필터링에 활용된다.
txt = "The best things in life are free!"
print("free" in txt)
위 코드는 True를 출력한다. “free”라는 문자열이 txt 변수에 포함되어 있기 때문이다.
조건문과 함께 사용하여 특정 문자열의 존재 여부에 따른 분기 처리도 가능하다.
txt = "The best things in life are free!"
if "free" in txt:
print("Yes, 'free' is present.")
반대로 특정 문자열이 포함되지 않았는지 확인하기 위해서는 not in 키워드를 사용한다.
txt = "The best things in life are free!"
print("expensive" not in txt)
위 코드는 True를 출력한다. “expensive”라는 문자열이 txt에 포함되어 있지 않기 때문이다.
문자열 슬라이싱
문자열의 특정 부분을 추출하는 것을 슬라이싱이라고 한다. 슬라이스 구문은 시작 인덱스와 끝 인덱스를 콜론으로 구분하여 지정한다. 시작 인덱스는 포함되고, 끝 인덱스는 포함되지 않는다.
b = "Hello, World!"
print(b[2:5])
위 코드는 “llo”를 출력한다. 인덱스 2부터 4까지의 문자를 추출한다.
처음부터 슬라이싱
시작 인덱스를 생략하면 문자열의 처음부터 지정된 끝 인덱스까지 슬라이싱한다.
b = "Hello, World!"
print(b[:5])
위 코드는 “Hello”를 출력한다.
끝까지 슬라이싱
끝 인덱스를 생략하면 지정된 시작 인덱스부터 문자열의 끝까지 슬라이싱한다.
b = "Hello, World!"
print(b[2:])
위 코드는 “llo, World!”를 출력한다.
음수 인덱싱
음수 인덱스를 사용하여 문자열의 끝부터 슬라이싱할 수 있다. -1은 마지막 문자를, -2는 뒤에서 두 번째 문자를 의미한다.
b = "Hello, World!"
print(b[-5:-2])
위 코드는 “orl”을 출력한다.
문자열 메서드
Python 문자열은 불변하므로, 기존 문자열을 직접 수정할 수는 없다. 대신 문자열 메서드를 사용하여 수정된 새 문자열을 반환받는다.
메서드 | 설명 | 예시 |
---|---|---|
upper() | 모든 문자를 대문자로 변환한다 | “Hello”.upper() → “HELLO” |
lower() | 모든 문자를 소문자로 변환한다 | “Hello”.lower() → “hello” |
strip() | 양끝 공백을 제거한다 | ” Hello “.strip() → “Hello” |
replace(old, new) | 지정된 문자열을 새로운 문자열로 교체한다 | “Hello”.replace(“H”, “J”) → “Jello” |
split(separator) | 구분자를 기준으로 문자열을 분할하여 리스트로 반환한다 | “a,b,c”.split(“,”) → [“a”, “b”, “c”] |
a = " Hello, World! "
print(a.strip())
위 코드는 “Hello, World!”를 출력한다. 양끝의 공백이 제거된다.
a = "Hello, World!"
print(a.replace("H", "J"))
위 코드는 “Jello, World!”를 출력한다.
a = "Hello, World!"
print(a.split(","))
위 코드는 [‘Hello’, ‘ World!’]를 출력한다. 쉼표를 기준으로 문자열이 분할된다.
문자열 연결
두 개 이상의 문자열을 결합하여 새로운 문자열을 생성하려면 + 연산자를 사용한다.
a = "Hello"
b = "World"
c = a + " " + b
print(c)
위 코드는 “Hello World”를 출력한다.
문자열 포맷팅
숫자와 문자열을 함께 사용해야 할 때는 문자열 포맷팅을 활용한다. format() 메서드나 f-strings를 사용할 수 있다.
format() 메서드
age = 36
txt = "My name is John, and I am {}"
print(txt.format(age))
위 코드는 “My name is John, and I am 36″을 출력한다.
f-strings
Python 3.6부터 도입된 f-strings는 문자열 내에 변수나 표현식을 직접 삽입하는 편리한 방법을 제공한다.
age = 36
txt = f"My name is John, I am {age}"
print(txt)
위 코드는 “My name is John, I am 36″을 출력한다.
이스케이프 문자
문자열 내에서 예약된 문자나 특수 문자를 표현해야 할 때 이스케이프 문자를 사용한다. 백슬래시 뒤에 오는 문자에 특별한 의미를 부여한다.
이스케이프 문자 | 설명 | 예시 |
---|---|---|
\’ | 작은따옴표 | ‘It\’s OK’ |
\” | 큰따옴표 | “We are \”Vikings\”” |
\\ | 백슬래시 | “C:\\path” |
\n | 줄바꿈 | “Hello\nWorld” |
\t | 탭 | “Hello\tWorld” |
txt = "We are the so-called \"Vikings\" from the north."
print(txt)
위 코드는 We are the so-called “Vikings” from the north.를 출력한다.
💡 문자열 처리 핵심 팁:
• 문자열 인덱스는 0부터 시작한다
• 슬라이싱에서 끝 인덱스는 포함되지 않는다
• 문자열은 불변 객체이므로 직접 수정할 수 없다
• in과 not in 키워드는 대소문자를 구분한다
• f-strings는 가장 현대적이고 효율적인 포맷팅 방법이다
Python 문자열은 텍스트 처리의 기초가 되는 중요한 데이터 타입이다. 다양한 메서드와 기능을 활용하여 효율적인 문자열 처리를 통해 강력한 텍스트 기반 애플리케이션을 개발할 수 있다.