파이썬 문자열 - 사용법과 주요 메서드
오늘은 파이썬에서 문자열 처리에 대해 자세히 공부했다. 문자열(String)은 프로그래밍에서 가장 기본적이면서도 중요한 데이터 타입 중 하나라는 사실을 다시 한번 깨달았다. 파이썬에서는 문자열을 쉽게 생성하고 조작할 수 있는 다양한 방법과 기능이 있어서 매우 유용하다.
문자열 생성
먼저, 문자열을 생성하는 방법에 대해 배웠다. 파이썬에서는 작은따옴표(' ')나 큰따옴표(" ")를 사용해 문자열을 생성할 수 있다. 아래와 같이 간단하게 문자열을 만들 수 있었다.
# 작은따옴표 사용
string1 = 'Hello, World!'
print(string1) # 출력: Hello, World!
# 큰따옴표 사용
string2 = "Hello, World!"
print(string2) # 출력: Hello, World!
또한, 여러 줄에 걸친 문자열을 생성할 때는 트리플 쿼트(''' ''' 또는 """ """)를 사용할 수 있다.
# 여러 줄 문자열
string3 = '''Hello,
World!'''
print(string3)
# 출력:
# Hello,
# World!
문자열 생성 시 주의사항
문자열을 생성할 때 동일한 따옴표를 중첩해서 사용하면 오류가 발생한다. 이를 피하기 위해 서로 다른 따옴표를 사용하는 것이 좋다.
# 큰따옴표 안에 작은따옴표 사용 (올바름)
string4 = "He said, 'Hello!'"
print(string4) # 출력: He said, 'Hello!'
# 작은따옴표 안에 큰따옴표 사용 (올바름)
string5 = 'She replied, "Hi!"'
print(string5) # 출력: She replied, "Hi!"
잘못된 예시로는 다음과 같은 코드가 있다:
# 작은따옴표 안에 작은따옴표 사용 (오류 발생)
# string6 = 'She replied, 'Hi!'' # SyntaxError
# 큰따옴표 안에 큰따옴표 사용 (오류 발생)
# string7 = "He said, "Hello!"" # SyntaxError
이러한 오류는 파이썬이 문자열의 끝을 인식하지 못해 발생하므로, 서로 다른 유형의 따옴표를 사용해야 한다.
문자열 인덱싱과 슬라이싱
문자열에서 특정 위치의 문자에 접근하거나 부분 문자열을 추출할 수 있는 인덱싱과 슬라이싱에 대해서도 배웠다.
문자열에서 특정 위치의 문자를 가져올 수 있다. 인덱스는 0부터 시작한다.
string = "Hello, World!"
first_char = string[0] # 'H'
last_char = string[-1] # '!'
print(first_char) # 출력: H
print(last_char) # 출력: !
문자열의 일부를 추출할 때 슬라이싱을 사용한다.
substring = string[0:5] # 'Hello'
substring2 = string[7:] # 'World!'
substring3 = string[:5] # 'Hello'
substring4 = string[::2] # 'Hlo ol!'
print(substring) # 출력: Hello
print(substring2) # 출력: World!
print(substring3) # 출력: Hello
print(substring4) # 출력: Hlo ol!
문자열 메서드
파이썬은 문자열을 다루기 위한 다양한 메서드를 제공하는데, 이들 메서드를 활용하면 문자열을 쉽게 조작할 수 있다.
문자열을 모두 소문자나 대문자로 변환할 수 있다. 이는 텍스트의 정규화(normalization) 또는 검색 기능 구현 시 유용하다.
string = "Hello, World!"
print(string.lower()) # "hello, world!"
print(string.upper()) # "HELLO, WORLD!"
문자열의 앞뒤 공백을 제거할 수 있다. 이는 입력 데이터를 정리하거나 사용자 입력을 처리할 때 자주 사용된다.
string_with_spaces = " Hello, World! "
print(string_with_spaces.strip()) # "Hello, World!"
문자열을 특정 구분자(delimiter)를 기준으로 나눌 수 있다. 이는 파일 읽기, 데이터 파싱 등에 유용하다. 이를 위해 split() 메서드를 사용한다.
# 기본 사용법
test = "물, 바람, 호수"
print(test.split(',')) # 출력: ['물', ' 바람', ' 호수']
split() 메서드는 인자로 구분자를 받을 수 있다. 예를 들어, 공백으로 분할할 수 있다.
sentence = "파이썬 문자열 자르기"
print(sentence.split()) # 출력: ['파이썬', '문자열', '자르기']
구분자와 함께 분할 횟수를 지정할 수도 있다.
# 구분자와 분할 횟수
data = "사과,배,체리,포도"
print(data.split(',', 2)) # 출력: ['사과', '배', '체리,포도']
여기서 maxsplit 파라미터를 사용하면 지정한 횟수만큼만 분할된다.
문자열이 특정 문자열을 포함하고 있는지 확인할 수 있다. 이는 검색 기능이나 데이터 검증 시 유용하다.
string = "Hello, World!"
print('Hello' in string) # True
문자열의 특정 부분을 다른 문자열로 대체할 수 있다. 이는 텍스트 수정이나 데이터 변환 시 유용하다.
string = "Hello, World!"
print(string.replace('Hello', 'Hi')) # "Hi, World!"
문자열 포맷팅
문자열 포맷팅은 다른 값들을 문자열 내에 삽입하는 방법이다. 여러 가지 방법이 있는데, 특히 f-string이 유용하다.
f-string을 사용하면 변수의 값을 문자열에 간단하게 삽입할 수 있다. 이는 가독성이 좋고 작성하기 편리하다.
name = "Alice"
age = 30
formatted_string = f"Name: {name}, Age: {age}" # "Name: Alice, Age: 30"
print(formatted_string) # 출력: Name: Alice, Age: 30
format() 메서드를 사용하면 변수의 값을 문자열에 삽입할 수 있다. 이는 다양한 포맷 옵션을 제공한다.
formatted_string2 = "Name: {}, Age: {}".format(name, age) # "Name: Alice, Age: 30"
print(formatted_string2) # 출력: Name: Alice, Age: 30
% 연산자를 사용한 문자열 포맷팅은 오래된 방식이지만 여전히 사용된다. C 언어 스타일의 포맷팅을 제공한다.
formatted_string3 = "Name: %s, Age: %d" % (name, age) # "Name: Alice, Age: 30"
print(formatted_string3) # 출력: Name: Alice, Age: 30
문자열의 길이
문자열의 길이를 구할 때는 len() 함수를 사용한다. 이는 문자열의 문자 수를 반환한다.
string_length = len("Hello, World!") # 13
print(string_length) # 출력: 13
문자열의 순회
문자열의 각 문자를 순회할 때는 for 문을 사용할 수 있다. 이는 문자열의 각 문자를 하나씩 처리할 때 유용하다.
string = "Hello"
for char in string:
print(char)
# H
# e
# l
# l
# o
줄바꿈 문자 표현 및 연결
줄바꿈 문자(개행 문자)를 표현할 때는 따옴표 3개를 사용해 여러 줄의 문자열을 정의할 수 있다.
# 줄바꿈 문자를 표현한다.
multi_line_string = '''줄바꿈
문자를
표현한다.'''
print(multi_line_string)
# 출력:
# 줄바꿈
# 문자를
# 표현한다.
문자를 이어 작성하면 붙여서 반환된다.
combined_string = 'Py' 'thon'
print(combined_string) # "Python"
문자열과 숫자 연산
문자에도 연산자를 사용할 수 있다. 문자열끼리는 더하기(+) 연산자를 사용해 연결할 수 있다. 숫자의 연산과 비교해 알아보았다.
# 따옴표가 없으면 숫자다.
print(1 + 1) # 2
# 따옴표가 있으면 문자다.
print("1" + "1") # "11"
문자와 문자를 더하거나 곱해도 숫자와 같은 결과가 나왔다.
print("파이썬" + "좋아요") # "파이썬좋아요"
print("파이썬좋아요" * 3) # "파이썬좋아요파이썬좋아요파이썬좋아요"
이처럼 더하기(+)를 이용해 문자와 문자는 연결할 수 있지만, 문자와 숫자는 연결할 수 없다.
# "문자와 숫자는 더할 수 없다." + 1
# 실행 결과:
# TypeError: can only concatenate str (not "int") to str
문자와 숫자를 연결하려면 데이터 타입을 맞춰야 한다. 예를 들어, 형변환을 통해 숫자를 문자열로 변환할 수 있다.
# 형변환을 통해서
print("문자와 숫자는 더할 수 없다." + str(1)) # "문자와 숫자는 더할 수 없다.1"
오늘 하루는 파이썬의 문자열 처리에 대해 많은 것을 배운 날이었다. 다양한 문자열 관련 메서드와 기능을 익히고, 실습을 통해 코드를 직접 작성해보니 더 이해가 잘 되었다. 앞으로 프로그래밍을 할 때 문자열을 더욱 효율적으로 다룰 수 있을 것 같아 기대된다. 오늘 배운 내용을 바탕으로 추가적인 연습을 해봐야겠다!