파이썬 기초 – 5장. 문자열 자료형(str) 기초

우리가 일상적으로 다루는 대부분의 정보는 텍스트로 이루어져 있습니다. 이메일, 문서, 웹 페이지 등 많은 종류의 데이터는 문자열로 표현됩니다. 지난번에 공부한 수치 자료형과 함께 문자열 자료형이 데이터 분석에서 가장 중요한 이유입니다.

문자열을 다루는데 있어서 파이썬은 쉬우면서도 매우 풍부한 기능을 제공합니다. 다양한 메서드와 기능을 내장하고 있고 복잡한 문자열도 쉽게 처리가 가능합니다. 이런 부분이 데이터 분석에서 파이썬이 주류의 언어로 자리 매김한 비결이라고 할 수 있습니다.

파이썬 기초 – 4장. 수치 자료형

문자열은 공부할 내용이 많아 기초 부터 몇번에 나누어 포스팅 예정입니다. 내용이 많고 다소 어려운 내용이 포함되어 있지만, 해당 파트는 꼼꼼히 공부해 보시기 바랍니다!

1. 문자열 자료형의 기본 개념

파이썬에서 문자열은 작은 따옴표(‘)나 큰 따옴표(“)로 감싸진 텍스트입니다. 예를 들어, "안녕하세요"'Hello, world!'처럼 표현할 수 있습니다.

2. 문자열 생성과 출력

문자열을 생성하는 가장 간단한 방법은 큰 따옴표(“”)나 작은 따옴표(”)로 둘러싸는 것입니다. 이렇게 생성한 문자열을 출력하려면 print() 함수를 사용합니다.

string1 = "안녕하세요"
string2 = 'Hello, world!'
string3 = """
파이썬은
다양한 분야에서
활용되는 언어입니다.
""" # 멀티라인 문자열 /작언 따옴표 세개도 가능

print(string1) 
print(string2)
print(string3)

3. 문자열 연산과 조작

수치자료형에서의 + 는 더하기, * 는 곱셈을 뜻하는데요, 문자열에서 +를 사용하면 문자를 연결 할 수 있습니다. 또한 문자열을 반복하려면 * 기호를 활용하면 됩니다.

greeting = "안녕"
name = "철수"
message = greeting + ", " + name + "!"
print(message)  # 출력: 안녕, 철수!

message2 = greeting * 2
print(message2) # 출력 : 안녕안녕

1) 인덱싱과 슬라이싱

문자열의 특정 문자에 접근하려면 인덱싱을 사용합니다. 인덱스는 0부터 시작합하고, 뒷쪽 인덱스를 슬라이싱 할경우 -1부터 시작합니다. 콜론(:)을 하나 사용하여 연속된 문자를 추출 할수 있고, 콜론을 두개 사용해서 일정 간격을 건너 뛰며 추출 할수도 있습니다.

설명이 복잡할 수 있으나, 아래의 예시코드를 참고하면 생각보다 단순한 것을 알게 될 것입니다. 참고로 마지막 슬라이싱 활용 예시는 우리가 평소에 많은 e-mail 데이터가 있다고 가정하고, 업체별 비중을 알고 싶을 때 사용 해 볼 수 있는 코드 예시 입니다.

참고로 index는 괄호안의 문자의 인덱스를 추출 하는 메소드 입니다. 뒷쪽에서 좀더 자세히 알아보도록 하겠습니다.

text = "파이썬은 프로그래밍 언어입니다."

# 기본적인 슬라이싱: 인덱스 3부터 6까지 추출
result1 = text[3:7] # 출력: "은 프로"

# 음수 인덱스 사용: 끝에서 6번째부터 끝까지 추출
result2 = text[-6:]  # 출력: "언어입니다."

# 스텝 지정: 2개씩 건너뛰며 추출
result3 = text[::2]  # 출력: "파썬 로래 어니."

# 역순 추출: 끝부터 시작해서 2개씩 건너뛰며 추출
result4 = text[::-2]  # 출력: ".니어 래로 썬파"

# 문자열 뒤집기
reversed_text = text[::-1]  # 출력: ".다니입어언 밍래그로프 은썬이파"

email = "example@gmail.com"

# 슬라이싱 활용 예시: 이메일 주소에서 도메인 추출
domain = email[email.index('@') + 1 : email.index('.com')]  # 출력: "gmail"

2) 문자열 수정과 삭제

문자열은 불변(immutable)하기 때문에 직접 수정할 수 없습니다. 수정을 원한다면 슬라이싱과 연결을 통해 수정된 문자열을 만들어야 합니다. (사용하는 자료형이 mutable인지 immutable인지는 매우 중요합니다. 꼭 알고 있도록 합시다. )

word = "안녕하십니까"
new_word = word[:2] + "세요"
print(new_word)  # 출력: 안녕하세요

4. 이스케이프 문자 사용

이스케이프 문자를 사용하여 특수 문자를 문자열에 포함시킬 수 있습니다. 가장 일반적으로 사용되는 이스케이프 문자는 다음과 같습니다. 역슬레쉬는 엔터 위에 있으며, 키보드에 따라 \마크로 되어 있느경우도 있습니다.

  • \n: 줄바꿈
  • \\: 역슬래시
  • \": 큰 따옴표
  • \': 작은 따옴표
multiline = "이 글은\n여러 줄로 이루어진\n문자열을 보여줍니다."
# 출력: "이 글은
# 여러 줄로 이루어진
# 문자열을 보여줍니다."

tabbed = "파이썬\t프로그래밍"
# 출력: "파이썬   프로그래밍"

backslash = "이것은 역슬래시를 포함한 경로입니다: C:\\경로\\파일.txt"
# 출력: "이것은 역슬래시를 포함한 경로입니다: C:\경로\파일.txt"

quote1 = "이것은 큰 따옴표(\")를 포함한 문자열입니다."
# 출력: "이것은 큰 따옴표(")를 포함한 문자열입니다."

quote2 = '이것은 작은 따옴표(\')를 포함한 문자열입니다.'
# 출력: '이것은 작은 따옴표(')를 포함한 문자열입니다.'

unicode_char = "한글 '가'의 유니코드는 \\uac00 입니다."
# 출력: "한글 '가'의 유니코드는 \uac00 입니다."

raw_string = r"이 문자열은 이스케이프 문자를 무시합니다: \n \t"
# 출력: "이 문자열은 이스케이프 문자를 무시합니다: \n \t"

5. 문자열 포맷팅

문자열안에 변수나 값을 삽입하는 방법을 포맷팅이라고 합니다. 크게 3개지 방법이 있으며, Python2에서 첫번째 방식인 %포멧팅을 권장하였으나, Python3 부터는 str.format()형식을 권장하는 편입니다. 3가지 방법 모두 사용에는 문제가 없는 만큼 익숙하고 편하게 사용할 수 있는 방법을 사용하면 됩니다.

1) % 포맷팅

% 연산자를 사용하여 문자열 내에 변수나 값을 삽입하는 방법입니다. $s는 문자열, %d는 int형을 의미합니다.

name = "영희"
age = 25
message = "제 이름은 %s이고 %d살입니다." % (name, age)
print(message) # 출력: "제 이름은 영희이고 25살입니다."

2) str.format() 메서드

str.format() 메서드를 사용하여 문자열 내에 값을 삽입하는 방법입니다.

item = "책"
price = 15000
sentence = "이 물건은 {}하나에 {}원입니다.".format(item, price)
print(sentence) # 출력: "이 물건은 책하나에 15000원입니다."

3) f-문자열 (f-strings)

f-문자열은 문자열 앞에 f 또는 F를 붙여서 사용하며, 중괄호 안에 변수나 표현식을 삽입하는 방법입니다.

name = "길동"
job = "개발자"
intro = f"안녕하세요, 제 이름은 {name}이고 직업은 {job}입니다."
print(intro) # 출력: "안녕하세요, 제 이름은 길동이고 직업은 개발자입니다."


4) 소수점 아래 숫자 표현

소수점 아래 숫자를 표현할 때는 % 포맷팅과 함께 .숫자f 형식을 사용합니다.

pi = 3.141592

# % 포맷팅
formatted_pi_percent = "원주율은 %.2f입니다." % pi

# str.format() 메서드
formatted_pi_format = "원주율은 {:.2f}입니다.".format(pi)

# f-문자열 (f-strings)
formatted_pi_fstring = f"원주율은 {pi:.2f}입니다."

# round() 함수
rounded_pi = round(pi, 2)
rounded_pi_message = f"원주율은 {rounded_pi}입니다."

6. 마무리

문자열은 처리하는 방법이 많은 만큼 여기까지만 하고 다음 포스팅에서 이어 가겠습니다. 내용이 다소 어렵더라도 반드시 직접 코딩을 해보며 익혀보도록 합시다. 물론 모든 내용을 외울 필요는 없으며, 활용중에 막힐 때 찾아보는 습관을 가지도록 합시다!

Leave a Comment