이번 포스팅에서는 파이썬 에서 쓰이는 split() 함수 를 예제를 통해 정리해보도록 하겠습니다.
Python에서 문자열을 조작할때 제일 많이 쓰이는 함수중 하나가 split() 함수입니다.
split() 함수의 기본적인 사용법과 예제, 그리고 실무 프로젝트에서 어떻게 활용할 수 있는지를 자세히 살펴보겠습니다.
그 외에 파이썬의 연사자 에 대해 궁금하시면 아래 포스팅을 같이 참고해주세요
[ 파이썬 ] 비교 연산자 문법 정리 ( ==, !=, >, <, >=, <= ) 및 예제
[파이썬] 산술 연산자 문법 정리 ( + , - , * , / , % , **, // ) 및 예제
[ 파이썬 ] 논리 연산자 문법 정리 ( AND,OR,NOT ) 및 예제
[개발 같이해요/PYTHON] - [ 파이썬 ] 할당 연산자 문법 정리 ( =,+=,-=,/=,//=,%=,*=,**= ) 및 예제
# 1. split() 함수 란?
split() 함수는 문자열을 특정 구분자를 기준으로 나누어 리스트로 반환하는 함수입니다.
기본적으로 공백 문자를 구분자로 사용하지만 다른 구분자를 지정할 수도 있습니다.
먼저 기본문법을 살펴보도록 하겠습니다.
기본 문법
str.split(separator, maxsplit)
- separator (선택 사항): 문자열을 나눌 기준이 되는 구분자입니다. 기본값은 모든 공백 문자입니다.
- maxsplit (선택 사항): 나눌 최대 횟수입니다. 기본값은 -1로, 제한 없이 나눕니다.
# 2. split() 함수 사용법 및 예제
그럼 split()함수가 어떻게 사용되는지, 여러 예제를 통해 알아보도록 하겠습니다.
기본 사용법
text = "Hello world"
words = text.split()
print(words)
# 출력: ['Hello', 'world']
구분자 지정
text = "사과,바나나,체리"
fruits = text.split(",")
print(fruits)
# 출력: ['사과', '바나나', '체리']
최대 분할 횟수 지정
text = "하나 둘 셋 넷"
limited_split = text.split(" ", 2)
print(limited_split)
# 출력: ['하나', '둘', '셋 넷']
# 3.실무 프로젝트 예시
이제 split() 함수 를 어떻게 쓰셔야 할지 감을 잡으셨나요? 잡으셨다면, 실제 실무 프로젝트 예시로 설명드리도록 하겠습니다.
프로젝트 - 로그 파일 분석
로그 파일은 일반적으로 각 라인이 특정 형식으로 되어 있으며, split() 함수를 사용하여 필요한 정보를 추출할 수 있습니다.
예를 들어, 웹 서버 로그 파일에서 IP 주소와 요청 URL을 추출해 보겠습니다.
# 로그파일
log_file = """
192.168.1.1 - - [01/Jan/2024:10:00:00 +0000] "GET /index.html HTTP/1.1" 200 1024
192.168.1.2 - - [01/Jan/2024:10:05:00 +0000] "POST /submit-form HTTP/1.1" 404 512
"""
# 로그 파일을 줄 단위로 나눕니다.
log_lines = log_file.strip().split("\n")
# 각 줄에서 IP 주소와 요청 URL을 추출합니다.
for line in log_lines:
parts = line.split()
ip_address = parts[0]
request = parts[5] + " " + parts[6]
print(f"IP 주소: {ip_address}, 요청: {request}")
# 출력:
# IP 주소: 192.168.1.1, 요청: "GET /index.html
# IP 주소: 192.168.1.2, 요청: "POST /submit-form
split() 함수를 사용하여 로그 파일의 각 줄을 공백을 기준으로 분할하고, IP 주소와 요청 URL을 추출했습니다.
데이터 전처리 - CSV 파일 데이터 처리
CSV 파일은 콤마(,)로 구분된 값들이 저장된 텍스트 파일로, 데이터 분석 및 처리에서 자주 사용됩니다.
split() 함수를 사용하여 CSV 파일의 각 줄을 분할하고 데이터를 처리하는 예제를 살펴보겠습니다.
#CSV 데이터
csv_data = """
name,age,city
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
"""
# CSV 파일을 줄 단위로 나눕니다.
lines = csv_data.strip().split("\n")
# 첫 줄은 헤더로 처리합니다.
header = lines[0].split(",")
print(f"헤더: {header}")
# 나머지 줄은 데이터로 처리합니다.
for line in lines[1:]:
fields = line.split(",")
print(f"이름: {fields[0]}, 나이: {fields[1]}, 도시: {fields[2]}")
# 출력:
# 타이틀: ['name', 'age', 'city']
# 이름: Alice, 나이: 30, 도시: New York
# 이름: Bob, 나이: 25, 도시: Los Angeles
# 이름: Charlie, 나이: 35, 도시: Chicago
이 코드에서는 CSV 데이터를 줄 단위로 분할한 후, 각 줄을 다시 콤마(,)를 기준으로 분할하여 필드를 추출했습니다.
리뷰 분석 - 텍스트 파일에서 특정 단어 빈도수 계산
대량의 텍스트 데이터를 처리할 때, 특정 단어의 빈도수를 계산하는 작업이 필요할 수 있습니다.
예를 들어, 고객 리뷰 텍스트에서 긍정적이거나 부정적인 단어의 빈도수를 계산해 보겠습니다.
reviews = """
The product is great and works perfectly.
I had a terrible experience with the customer service.
Excellent quality and fast delivery.
Very disappointing and not worth the price.
"""
# 단어 빈도수를 저장할 딕셔너리
word_count = {}
# 리뷰 텍스트를 줄 단위로 나누고 각 줄을 다시 단어 단위로 나눕니다.
for line in reviews.strip().split("\n"):
words = line.split()
for word in words:
# 단어를 소문자로 변환하여 일관성 유지
word = word.lower().strip(".,")
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
# 특정 단어들의 빈도수 출력
keywords = ["great", "terrible", "Excellent", "disappointing"]
for keyword in keywords:
print(f"'{keyword}': {word_count.get(keyword, 0)}")
# 출력:
# 'great': 1
# 'terrible': 1
# 'excellent': 1
# 'disappointing': 1
이 코드에서는 리뷰 텍스트를 줄 단위로 분할하고, 각 줄을 다시 단어 단위로 분할하여 단어의 빈도수를 계산했습니다.
각 단어를 소문자로 변환하고 구두점을 제거하여 빈도수 계산의 정확성을 높였습니다.
# 4. 마무리
split() 함수가 실무 프로젝트에서 어떻게 활용될 수 있는지를 잘 보여줍니다. CSV 데이터 처리와 텍스트 분석은 데이터 과학 및 데이터 엔지니어링에서 매우 일반적인 작업으로, split() 함수는 이러한 작업을 보다 쉽게 수행할 수 있게 해줍니다.
이를 통해 데이터 처리 작업을 효율적으로 수행할 수 있습니다.