문제
문자열을 필드로 분할해야 하지만 구분 기호가 문자열 전체에서 일관되지 않습니다.
해결책
파이썬에서 여러 구분 기호의 문자열 또는 문자열을 분할할 수 있는 여러 가지 방법이 있습니다. 가장 쉽고 간편한 방법은 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']