2011-03-31 5 views
0

python이 처음 사용되었으며 함수를 가져 오는 데 문제가 있습니다. 정규식이 필요합니다. 기본적으로 나는 "Hello, World, Nice"처럼 보이는 문자열을 가지고 있으며, 구분자가 , 인 목록으로 변환해야합니다. 기본적으로 내가 얻을 결과가 ['Hello', ' World', ' Nice']입니다 정규식 문제를 통해 문자열 나누기

re.split(',', string)

['Hello', 'World', 'Nice'] 같은 최종 결과가 보일 것입니다. 다른 방법을 통해 해결책을 알고 있지만 정규식을 사용하고 싶습니다.

도움 주시면 감사하겠습니다. 재를 사용하여 공간

re.split(', ', string) 

답변

3

은 마음에 와서 두 가지 솔루션이 있습니다. 장점은 코드에서 자주 분리하면 정규식 컴퓨터를 건너 뛰는 것입니다 (합계가되지는 않지만 을 실제로는으로 나눌 때까지).

+0

awesome , 대접 감사처럼 일했다! – Benji

+0

당신을 진심으로 환영합니다. – Boldewyn

+0

'r' 원시 문자열 보호는 제거 될 수 있습니다. 왜냐하면'\ s'는 파이썬에 의해 해석되지 않기 때문입니다. – EOL

0

분할 :

>>> import re 
>>> re.split(', ',a) 
['Hello', 'World', 'Nice'] 
>>> 
0
>>> a = "Hello, World, Nice" 
>>> a.split(", ") 
['Hello', 'World', 'Nice'] 
>>> 

', '

0
re.split(', ', string) 

당신이 원하는 않습니다.

0

특정 고급 요구 사항이 없다면 모듈을 다시 설치할 필요가 없습니다.

>>> "Hello, World, Nice".split(",") 
['Hello', ' World', ' Nice'] 
>>> map(str.strip, "Hello, World, Nice".split(",")) 
['Hello', 'World', 'Nice'] 

정말로 고집한다면.

re.split(r'\s*,\s*', string) 
#   ^- zero or more whitespace incl. tabs and newlines 
# the r'' syntax preserves the backslash from being interpreted 
# as escape sequence 

map(str.strip, string.split(',')) 
# ^- apply the 'strip' function (~ 'trim' in other languages) to all matches 

내가 나중에 갈 것 : 공백이 임의적 일 수 있다는 가정

>>> re.split('\s*,\s*', "Hello, World, Nice") 
['Hello', 'World', 'Nice'] 
-1

정규식

>>> a = "Hello, World, Nice" 
>>> a.split("[ ,\\,]") 

먼저 공간 분할이 정규식 시도 번째 콤마

+0

그건 정규식이 아닙니다. 'str.split()'는 regex를 사용하지 않습니다. 그리고 그렇게된다면''Hello World ''도 나눌 것입니다. – Boldewyn

0

약간 더 강력한 솔루션이다

>>> import re 
>>> pattern = re.compile(' *, *') 
>>> l = "Hello, World , Nice" 
>>> pattern.split(l) 
['Hello', 'World', 'Nice'] 
>>> 
3

하, 정규식 O/w 다른 해결책 :

x="Hello, World, Nice" 
[y.strip() for y in x.split(",")] 
+0

+1은 목록 이해력을 나타냅니다. 나는 그 구문을 좋아한다. – Boldewyn