Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python으로 여러 구분 기호로 문자열을 분할하는 방법은 무엇입니까?

<시간/>

문제

문자열을 필드로 분할해야 하지만 구분 기호가 문자열 전체에서 일관되지 않습니다.

해결책

파이썬에서 여러 구분 기호의 문자열 또는 문자열을 분할할 수 있는 여러 가지 방법이 있습니다. 가장 쉽고 간편한 방법은 split() 메서드를 사용하는 것이지만 간단한 경우를 처리하기 위한 것입니다.

re.split() is more flexible than the normal `split()` method in handling complex string scenarios.

re.split()을 사용하면 구분 기호에 대해 여러 패턴을 지정할 수 있습니다. 솔루션에 표시된 대로 구분 기호는 하이픈(-) 또는 공백( ) 또는 쉼표(,) 뒤에 오는 값입니다. 정규 표현식 문서는 여기에서 찾을 수 있습니다.

해당 패턴이 발견될 때마다 전체 일치가 일치 양쪽에 있는 필드 사이의 구분 기호가 됩니다.

구분 기호 사이의 텍스트만 추출합니다(구분자 없음).

예시

import re
tennis_greats = 'Roger-federer, Rafael nadal, Novak Djokovic,Andy murray'
""""
#-----------------------------------------------------------------------------
# Scenario 1 - Output the players
# Input - String with multiple delimiters ( - , white space)
# Code - Specify the delimters in []
#-----------------------------------------------------------------------------
"""
players = re.split(r'[-,\s]\s*',tennis_greats)

출력

print(f" The output is - {players}")

출력은 -

['Roger', 'federer', 'Rafael', 'nadal', 'Novak', 'Djokovic', 'Andy', 'murray']

구분자와 구분자 사이의 텍스트 추출

예시

import re
tennis_greats = 'Roger-federer, Rafael nadal, Novak Djokovic,Andy murray'
""""
#-----------------------------------------------------------------------------
# Scenario 2 - Output the players and the delimiters
# Input - String with multiple delimiters ( - , white space)
# Code - Specify the delimters between pipe (|)
#-----------------------------------------------------------------------------
"""
players = re.split(r'(-|,|\s)\s*',tennis_greats)

출력

print(f" The output is -{players}")

출력은 -

['Roger', '-', 'federer', ',', 'Rafael', ' ', 'nadal', ',', 'Novak', ' ', 'Djokovic', ',', 'Andy', ' ', 'murray']