2017-09-12 1 views
0

를 사용하여 숫자 값을 분할 할 때 빈 문자열 값을 얻기 :이 같은 문자열 값으로 긴 목록이 정규식

:

AB65 

내가 숫자에서 문자를 분할하고 싶지만을 나는이 작업을 수행 할 때

re.split('([A-Z]+)([0-9]+)', 'AB65') 

나는 빈 문자열 값으로 다음 얻을 :

['', 'AB', '65', ''] 

가 어떻게이 같은 값을받을 수 있나요 : [ ' AB ','65 '] 도와 주셔서 감사합니다.

+4

이 예제에서'.findall' 대신'.split'을 쓰는 이유는 무엇입니까? –

+0

@JonClements 실제로 pandas str.split() 함수를 사용하고 있습니다. – Danjiri

+0

언급할만한 가치가있어 ... 팬더에도'str.findall'이 있기 때문에 ... –

답변

3

re.split사이에서 정규식과 일치합니다. 당신이 필요로하는 대신 re.findall입니다 :

>>> re.findall('([A-Z]+)([0-9]+)', 'AB65') 
[('AB', '65')] 

이 아직하지 않습니다 잘 작동, 정규식은 전체 문자열 'AB65' 일치하고 두 캡처 그룹을 포함하기 때문이다. 그래서 우리는 중 하나 문자 또는 번호를 (그래서 |으로 구분)과 일치하고, 비 캡처 그룹을 사용하는 정규식이 필요 (그래서 (?:…) 사용) : 사실

>>> re.findall('(?:[A-Z]+)|(?:[0-9]+)', 'AB65') 
['AB', '65'] 

을,이 간단한 경우 , 괄호는 필요하지 않습니다 :

>>> re.findall('[A-Z]+|[0-9]+', 'AB65') 
['AB', '65'] 
+0

마지막으로 완벽하게 작동했습니다! – Danjiri