파이썬 문자열 - 사용법과 주요 메서드

소요 시간: 10분

오늘은 파이썬에서 문자열 처리에 대해 자세히 공부했다. 문자열(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"


오늘 하루는 파이썬의 문자열 처리에 대해 많은 것을 배운 날이었다. 다양한 문자열 관련 메서드와 기능을 익히고, 실습을 통해 코드를 직접 작성해보니 더 이해가 잘 되었다. 앞으로 프로그래밍을 할 때 문자열을 더욱 효율적으로 다룰 수 있을 것 같아 기대된다. 오늘 배운 내용을 바탕으로 추가적인 연습을 해봐야겠다!

파이썬 리스트