포스트

[ Python 강의 ] 6-3. 문자열 심화

파이썬 문자열 이해하기 - Part 3: 문자열 심화

파이썬에서 문자열을 심도 있게 이해하기 위해서는 문자열의 여러 고급 기능과 개념들을 알아야 합니다. 이번 파트에서는정규 표현식, 문자열의 유니코드 처리 등을 자세히 살펴보겠습니다.

문자열 인코딩과 디코딩: 이해와 원리

문자열 인코딩과 디코딩은 컴퓨터가 문자를 처리하는 방식의 핵심입니다. 컴퓨터는 기본적으로 숫자만을 이해할 수 있기 때문에, 문자를 숫자로 변환하는 과정이 필요합니다. 이것이 바로 ‘인코딩’의 역할입니다.

문자열 인코딩이란?

인코딩은 문자를 컴퓨터가 이해할 수 있는 형태, 즉 바이트로 변환하는 과정입니다. 예를 들어, ASCII 인코딩은 영문 알파벳을 숫자로 매핑합니다. 하지만 ASCII는 영문자만 표현할 수 있기 때문에, 다양한 언어를 지원하기 위한 더 광범위한 인코딩 체계가 필요했습니다.

예시: UTF-8 인코딩

UTF-8은 국제적으로 널리 사용되는 인코딩 방식입니다. 이 인코딩은 유니코드 문자를 나타내는 표준 방식 중 하나로, 다양한 언어와 특수 문자를 지원합니다.

1
2
3
original = "안녕하세요"
encoded = original.encode("utf-8")
print(encoded)  # 출력: 바이트 형태로 인코딩된 문자열

문자열 디코딩이란?

디코딩은 인코딩의 반대 과정으로, 바이트를 다시 문자로 변환합니다. 이 과정은 저장되거나 전송된 데이터를 원래의 문자 형태로 복원하는 데 사용됩니다.

1
2
decoded = encoded.decode("utf-8")
print(decoded)  # 출력: 원래의 문자열 "안녕하세요"

유니코드란?

유니코드는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다루기 위한 산업 표준입니다. 각 문자는 고유한 코드 포인트(code point)를 가지며, 이를 통해 다양한 문자와 기호가 정확하게 나타납니다.

유니코드의 중요성

유니코드는 글로벌 환경에서 다양한 언어와 기호를 정확하게 처리할 수 있게 해줍니다. 이를 통해 서로 다른 언어 및 문자 체계를 사용하는 사람들 간의 데이터 교환과 통신이 원활해집니다.

1
2
unicode_string = "こんにちは"  # 일본어 문자열
print(unicode_string)  # 출력: こんにちは
  • 사용 예시: 파일 처리, 웹 데이터 처리 등에서 다양한 문자 인코딩 처리에 사용됩니다.

정규 표현식

정규 표현식(Regular Expressions)은 텍스트에서 특정 패턴을 찾기 위한 강력한 도구입니다. 파이썬에서는 re 모듈을 통해 정규 표현식을 사용할 수 있으며, 복잡한 문자열 처리 작업을 단순화하는 데 매우 유용합니다.

정규 표현식의 기본

정규 표현식은 문자열을 검색하고, 대체하고, 조작하기 위해 사용되는 문자 패턴입니다. 기본적인 구성 요소는 다음과 같습니다:

  • 리터럴(literals): 일반 텍스트 문자
  • 메타 문자(meta characters): 특별한 의미를 가진 문자(., ^, $, *, +, ?, {}, [], \, |, ())
  • 이스케이프 문자(escape characters): \ 뒤에 오는 문자는 특별한 의미를 가집니다. 예를 들어, \d는 모든 숫자를 나타냅니다.

정규 표현식 예시

1. 문자열 검색

re.search() 함수는 문자열 내에서 정규 표현식과 일치하는 첫 번째 부분을 찾습니다.

1
2
3
4
5
6
7
import re # re 라는 기능을 불러오는 것. 뒤에 모듈 관련 강의 참고.

text = "The rain in Spain"
pattern = "rain"
match = re.search(pattern, text)
if match:
    print("Found:", match.group())  # 출력: Found: rain

2. 패턴 매칭

다양한 메타 문자를 사용하여 복잡한 패턴을 매칭할 수 있습니다.

  • .: 모든 문자와 매치(개행 문자 제외)
  • ^: 문자열의 시작과 매치
  • $: 문자열의 끝과 매치
  • *: 0회 이상 반복
  • +: 1회 이상 반복
  • ?: 0회 또는 1회
1
2
3
4
pattern = "^The.*Spain$"
match = re.search(pattern, text)
if match:
    print("Match found")  # Match found

3. 문자 클래스

대괄호 []를 사용하여 문자의 집합을 나타내는 클래스를 만들 수 있습니다.

1
2
3
pattern = "[a-zA-Z]+"
match = re.findall(pattern, text)  # 모든 단어 찾기
print(match)  # 출력: ['The', 'rain', 'in', 'Spain']

4. 문자열 대체

re.sub() 함수를 사용하여 특정 패턴을 찾아 다른 문자열로 대체할 수 있습니다.

1
2
replaced_text = re.sub("Spain", "Italy", text)
print(replaced_text)  # 출력: The rain in Italy

정규 표현식의 활용

정규 표현식은 다음과 같은 경우에 유용하게 사용됩니다:

  • 사용자 입력 검증
  • 데이터에서 패턴 찾기
  • 로그 파일 분석
  • 데이터 스크래핑 및 파싱
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.