본문 바로가기
Python 문법/Python 기본 문법(3.10 기준)

[python3.10 기본] 7. 문자열 조작

by cogito21_python 2024. 7. 1.
반응형

7.1 문자열 인덱싱과 슬라이싱

문자열 인덱싱과 슬라이싱을 사용하면 문자열의 특정 부분을 추출하거나 조작할 수 있습니다.

 

문자열 인덱싱: 문자열의 특정 위치에 접근할 수 있습니다. 인덱스는 0부터 시작합니다.

s = "Hello, World!"
print(s[0])  # 'H'
print(s[7])  # 'W'
print(s[-1])  # '!'

문자열 슬라이싱: 문자열의 특정 부분을 추출할 수 있습니다.

s = "Hello, World!"
print(s[0:5])  # 'Hello'
print(s[7:])  # 'World!'
print(s[:5])  # 'Hello'
print(s[::2])  # 'Hlo ol!'

7.2 문자열 메소드

문자열 메소드는 문자열을 조작하거나 정보를 추출하는 데 사용됩니다.

 

대소문자 변환

s = "Hello, World!"
print(s.upper())  # 'HELLO, WORLD!'
print(s.lower())  # 'hello, world!'
print(s.capitalize())  # 'Hello, world!'
print(s.title())  # 'Hello, World!'

문자열 검색

s = "Hello, World!"
print(s.find("World"))  # 7
print(s.startswith("Hello"))  # True
print(s.endswith("!"))  # True

문자열 교체

s = "Hello, World!"
print(s.replace("World", "Python"))  # 'Hello, Python!'

문자열 분리와 결합

s = "Hello, World!"
words = s.split(", ")
print(words)  # ['Hello', 'World!']
print(", ".join(words))  # 'Hello, World!'

공백 제거

s = "  Hello, World!  "
print(s.strip())  # 'Hello, World!'
print(s.lstrip())  # 'Hello, World!  '
print(s.rstrip())  # '  Hello, World!'

7.3 문자열 포매팅

파이썬에서는 다양한 문자열 포매팅 방법을 제공합니다.

 

퍼센트 포매팅

name = "Alice"
age = 25
print("My name is %s and I am %d years old." % (name, age))  # 'My name is Alice and I am 25 years old.'

str.format() 메소드

name = "Alice"
age = 25
print("My name is {} and I am {} years old.".format(name, age))  # 'My name is Alice and I am 25 years old.'
print("My name is {0} and I am {1} years old.".format(name, age))  # 'My name is Alice and I am 25 years old.'
print("My name is {name} and I am {age} years old.".format(name=name, age=age))  # 'My name is Alice and I am 25 years old.'

f-string 포매팅 (Python 3.6+)

name = "Alice"
age = 25
print(f"My name is {name} and I am {age} years old.")  # 'My name is Alice and I am 25 years old.'

7.4 정규 표현식

정규 표현식(regular expression)은 문자열에서 특정 패턴을 찾거나 조작하는 데 사용됩니다. 파이썬에서는 re 모듈을 사용하여 정규 표현식을 처리할 수 있습니다.

 

정규 표현식 기본 사용법

import re

pattern = r"\b\w{5}\b"
text = "Hello, world! This is a test."
matches = re.findall(pattern, text)
print(matches)  # ['Hello', 'world']

정규 표현식 메소드

# match: 문자열의 처음부터 패턴이 일치하는지 검사
match = re.match(r"\w+", "Hello, world!")
if match:
    print(match.group())  # 'Hello'

# search: 문자열에서 패턴이 일치하는 첫 부분을 찾음
match = re.search(r"world", "Hello, world!")
if match:
    print(match.group())  # 'world'

# findall: 문자열에서 패턴이 일치하는 모든 부분을 찾음
matches = re.findall(r"\b\w{5}\b", "Hello, world! This is a test.")
print(matches)  # ['Hello', 'world']

# sub: 문자열에서 패턴이 일치하는 부분을 다른 문자열로 치환
result = re.sub(r"world", "Python", "Hello, world!")
print(result)  # 'Hello, Python!'
반응형