본문 바로가기
파이썬기초(Python Basic)

파이썬에서 문자열 다루기: 완벽 설명

by 친절한에릭 2023. 5. 18.

파이썬에서 활용도가 높은 문자열 데이터를 다루는 방법을 익히는 것은 매우 중요합니다. 이 글에서는 파이썬 문자열의 기본과 파이썬 문자열 연산자와 메써드, 문자열 포매팅 방법, 문자열 데이터 처리, 실전 예제 순으로 설명해 드리겠습니다.

 

파이썬 문자열의 기본

문자열 정의와 선언

파이썬에서 문자열은 단일 따옴표(') 또는 이중 따옴표(")로 둘러싸인 문자의 시퀀스입니다. 다음은 파이썬에서 문자열을 정의하는 방법입니다.

str1 = '안녕하세요'
str2 = "파이썬 공부를 시작해 보세요"

문자열 출력

print() 함수를 사용하면 콘솔에 문자열을 출력할 수 있습니다. 예를 들어:

print(str1)
print(str2)

이 코드를 실행하면 '안녕하세요'와 '파이썬 공부를 시작해 보세요'가 출력됩니다.

파이썬 문자열 연산자와 메소드

연산자를 이용한 문자열 조작

파이썬에서 문자열을 다루는 데 도움이 되는 몇 가지 연산자가 있습니다. '+'와 '* '연산자가 가장 일반적으로 사용됩니다.

+ 연산자를 사용하면 두 문자열을 합칠 수 있습니다.

s1 = "안녕"
s2 = "하세요"
print(s1 + s2)  # 출력: 안녕하세요

* 연산자를 사용하면 문자열을 여러 번 반복할 수 있습니다.

s = "파이썬! "
print(s * 3)  # 출력: 파이썬! 파이썬! 파이썬!

문자열 메소드

파이썬 문자열은 다양한 내장 메소드를 제공합니다. 이들 중 일부는 다음과 같습니다.

  • upper(): 문자열의 모든 문자를 대문자로 변환합니다.
  • lower(): 문자열의 모든 문자를 소문자로 변환합니다.
  • find(): 문자열에서 부분 문자열을 찾아 그 위치를 반환합니다. 부분 문자열이 없으면 -1을 반환합니다.
  • replace(): 문자열에서 특정 부분을 다른 부분으로 교체합니다.

이러한 메소드를 사용하면 문자열을 쉽게 조작할 수 있습니다.

s = "Hello, Python!"
print(s.upper())  # 출력: HELLO, PYTHON!
print(s.lower())  # 출력: hello, python!
print(s.find("Python"))  # 출력: 7
print(s.replace("Python", "World"))  # 출력: Hello, World!

이 글을 통해 파이썬에서 문자열을 다루는 기본적인 방법을 배웠습니다. 파이썬의 문자열 연산자와 메소드를 적절히 활용하면, 문자열을 다루는 것이 훨씬 더 쉬워질 것입니다.

 문자열 포매팅

f-string 포매팅

파이썬 3.6 이후로 f-string 포매팅 방법이 도입되었습니다. 이 방식은 편리하고 직관적인 방법으로 문자열 내에 변수의 값을 삽입할 수 있습니다.

name = "홍길동"
age = 30
print(f"이름: {name}, 나이: {age}")

이 코드는 "이름: 홍길동, 나이: 30"을 출력합니다.

문자열 슬라이싱

문자열에서 특정 부분을 추출할 수 있는데, 이를 슬라이싱이라 합니다. 문자열 슬라이싱은 [시작 인덱스:끝 인덱스] 형식으로 사용하며, 시작 인덱스는 포함하고 끝 인덱스는 포함하지 않습니다.

s = "안녕하세요"
print(s[1:4])  # 출력: 녕하세

문자열에서 데이터 처리하기

str.capitalize

capitalize() 메서드는 문자열의 첫 글자를 대문자로 변환하고 나머지는 소문자로 변환합니다.

s = "hello WORLD"
print(s.capitalize())  # 출력: "Hello world"

str.format

format() 메서드는 문자열 포매팅을 제공하며, 문자열 안의 중괄호 {} 위치에 변수를 삽입할 수 있습니다.

name = "홍길동"
age = 30
print("이름: {}, 나이: {}".format(name, age))  # 출력: "이름: 홍길동, 나이: 30"

str.isalnum

isalnum() 메서드는 문자열이 알파벳과 숫자로만 이루어져 있는지 확인합니다. 모든 문자가 알파벳이거나 숫자인 경우 True를 반환하고, 그렇지 않은 경우 False를 반환합니다.

s = "abc123"
print(s.isalnum())  # 출력: True

str.isalpha

isalpha() 메서드는 문자열이 알파벳으로만 이루어져 있는지 확인합니다. 모든 문자가 알파벳인 경우 True를 반환하고, 그렇지 않은 경우 False를 반환합니다.

s = "abc"
print(s.isalpha())  # 출력: True

str.isdigit

isdigit() 메서드는 문자열이 숫자로만 이루어져 있는지 확인합니다. 모든 문자가 숫자인 경우 True를 반환하고, 그렇지 않은 경우 False를 반환합니다.

s = "123"
print(s.isdigit())  # 출력: True

str.join

join() 메서드는 리스트나 튜플의 요소 사이에 문자열을 삽입합니다.

s = "-".join(["2023", "05", "18"])
print(s)  # 출력: "2023-05-18"

str.replace

replace() 메서드는 문자열에서 특정 문자열을 다른 문자열로 바꿔줍니다.

s = "Hello, world!"
print(s.replace("world", "Python"))  # 출력: "Hello, Python!"

str.split

split() 메서드는 문자열을 특정 문자열을 기준으로 나누어줍니다.

s = "사과,바나나,포도"
fruits = s.split(",")
print(fruits)  # 출력: ['사과', '바나나', '포도']

str.strip

strip() 메서드는 문자열의 양 끝에 있는 공백을 제거해줍니다.

s = "   Hello, world!   "
print(s.strip())  # 출력: "Hello, world!"

실전 예제

예제 1: 온도 변환 프로그램

파이썬에서 문자열을 사용하여 섭씨를 화씨로, 또는 그 반대로 변환하는 간단한 프로그램을 만들 수 있습니다.

def convert_temp(unit, temp):
    if unit.upper() == 'C':
        return f"{temp}도 섭씨는 {(temp * 9/5) + 32}도 화씨입니다."
    else:
        return f"{temp}도 화씨는 {(temp - 32) * 5/9}도 섭씨입니다."

print(convert_temp('C', 20))
print(convert_temp('F', 68))

<실행결과>

 

온도변환프로그램실행결과
온도변환프로그램실행결과

예제 2: 이름 분리 프로그램

파이썬의 문자열 메소드를 사용하여 한글 이름에서 성과 이름을 분리하는 프로그램을 작성할 수 있습니다.

def split_name(full_name):
    last_name = full_name[0]
    first_name = full_name[1:]
    return f"성: {last_name}, 이름: {first_name}"

print(split_name("홍길동"))

이 프로그램은 "성: 홍, 이름: 길동"이라는 결과를 출력합니다.

이상으로 파이썬에서 문자열을 다루는 방법에 대해 살펴보았습니다. 이 기능들은 매우 강력하므로 잘 활용하면 효과적으로 문제를 해결할 수 있습니다. 다음 시간에는 다른 파이썬 기능에 대해 더 자세히 알아보겠습니다.

예제 3: 날짜 형식 변환기

시간과 날짜는 많은 분야에서 중요하게 쓰입니다. 특히 데이터 분석에서는 다양한 날짜 형식을 다루는 경우가 많습니다. 아래의 예제는 파이썬 문자열 메서드를 이용해 날짜 형식을 변환하는 코드입니다.

date_string = "2023-05-18"

# '-'를 기준으로 날짜를 분리
year, month, day = date_string.split('-')

# 원하는 형식으로 날짜를 재조합
new_date_string = "/".join([month, day, year])
print(new_date_string)  # 출력: "05/18/2023"

예제 4: 이메일 주소 유효성 검사기

이메일 주소 유효성 검사는 웹 개발에서 흔히 볼 수 있는 작업입니다. 아래의 예제는 간단한 이메일 주소 유효성 검사 코드입니다.

def check_email():
    email = input("이메일 주소를 입력하세요: ")

    # '@' 기호가 있는지 확인
    if "@" in email:
        user, domain = email.split('@')

        # '.' 기호가 도메인 이름에 있는지 확인
        if '.' in domain:
            print("이메일 주소가 유효합니다.")
        else:
            print("도메인 이름에 '.' 기호가 없습니다.")
    else:
        print("이메일 주소에 '@' 기호가 없습니다.")

check_email()

 

<실행결과>

 

이메일체크프로그램
이메일주소체크프로그램

예제 5: 텍스트 파일 처리기

아래 프로그램은 사용자로부터 메뉴 번호를 입력받아 선택된 메뉴에 해당하는 함수를 실행합니다. 사용자로부터 파일 경로와 이름을 입력받아 텍스트를 읽고, 이를 다양한 방식으로 처리한 후, 결과를 화면에 출력하거나 파일에 저장합니다. 사용자가 '7. 그만두기'를 선택하면 프로그램은 종료됩니다.사용자가 텍스트 파일을 읽고, 특정 문자열을 제거하거나 교체하고, 글자 수를 세며, 이 모든 결과를 다시 파일에 저장할 수 있는 기능을 제공합니다.  

import os

def open_file():
    path = input("파일 경로와 이름을 입력하세요: ")
    with open(path, 'r', encoding='utf-8') as file:
        text = file.read()
    print(text)
    return text

def remove_string(text):
    target = input("제거할 문자열을 입력하세요: ")
    text = text.replace(target, "")
    print(text)
    return text

def count_chars_include_space(text):
    count = len(text)
    print(f"글자수(공백 포함): {count}")
    return count

def count_chars_exclude_space(text):
    count = len(text.replace(" ", ""))
    print(f"글자수(공백 불포함): {count}")
    return count

def replace_string(text):
    old_string = input("대체될 문자열을 입력하세요: ")
    new_string = input("대체할 문자열을 입력하세요: ")
    text = text.replace(old_string, new_string)
    print(text)
    return text

def save_file(text):
    print("저장할 내용:")
    print(text)
    answer = input("저장하시겠습니까? (yes/no): ")
    if answer.lower() == 'yes':
        path = input("저장할 파일의 경로와 이름을 입력하세요: ")
        with open(path, 'w', encoding='utf-8') as file:
            file.write(text)
        print("파일이 저장되었습니다.")

def main():
    text = ""
    while True:
        print("\n메뉴를 선택하세요:")
        print("1. 텍스트 파일 열기")
        print("2. 특정 문자열 제거")
        print("3. 글자수 세기(공백 포함)")
        print("4. 글자수 세기(공백 불포함)")
        print("5. 문자열 대체하기")
        print("6. 파일 저장하기")
        print("7. 그만두기")
        option = input("번호를 입력하세요: ")

        if option == '1':
            text = open_file()
        elif option == '2':
            text = remove_string(text)
        elif option == '3':
            count_chars_include_space(text)
        elif option == '4':
            count_chars_exclude_space(text)
        elif option == '5':
            text = replace_string(text)
        elif option == '6':
            save_file(text)
        elif option == '7':
            break
        else:
            print("올바른 번호를 입력하세요.")

if __name__ == "__main__":
    main()

실행결과

텍스트파일처리기
텍스트파일처리기

 

마무리

파이썬의 문자열 처리 기능은 프로그래밍 작업을 간결하고 효율적으로 수행하는 데 매우 중요합니다. 이 글에서는 문자열의 기본적인 작업부터 고급 작업까지 다양한 방법을 살펴보았습니다. 이러한 지식은 데이터 분석, 웹 개발, 자동화 스크립트 작성 등 다양한 분야에서 유용하게 사용할 수 있습니다. 기억하십시오, 연습은 완벽을 만듭니다. 그러니 이 글에 나온 코드를 직접 입력해 보고 결과를 확인해 보세요. 

자주 묻는 질문

(H3) 1. 파이썬 문자열에서 특정 문자를 찾는 방법은 무엇인가요?

find() 또는 index() 문자열 메소드를 사용하여 문자열에서 특정 문자나 문자열을 찾을 수 있습니다. 두 메소드 모두 첫 번째로 찾은 위치를 반환합니다.

(H3) 2. 파이썬 문자열을 정렬하는 방법은 무엇인가요?

파이썬의 sorted() 함수를 사용하면 문자열을 알파벳 순으로 정렬할 수 있습니다. join() 메소드를 사용하면 정렬된 문자들을 다시 하나의 문자열로 합칠 수 있습니다.

(H3) 3. 파이썬에서 문자열의 일부를 바꾸려면 어떻게 해야 하나요?

replace() 문자열 메소드를 사용하여 문자열의 일부를 다른 문자열로 바꿀 수 있습니다. 이 메소드는 원본 문자열을 변경하지 않고 새 문자열을 반환합니다.

(H3) 4. 파이썬에서 두 문자열을 합치려면 어떻게 해야 하나요?

+ 연산자를 사용하여 두 문자열을 합칠 수 있습니다. 또는 join() 메소드를 사용하여 여러 문자열을 하나로 결합할 수도 있습니다.

(H3) 5. 파이썬에서 문자열을 반복하려면 어떻게 해야 하나요?

* 연산자를 사용하여 문자열을 반복할 수 있습니다. 예를 들어, "반복" * 3은 "반복반복반복"을 반환합니다.

 

python string
파이썬문자열

댓글