2012-03-28 3 views
5

문자열이 있습니다. 나는 같은 출력을 원하는 파이썬 &를 사용하여 목록으로 변환 할문자열을 파이썬으로 목록 변환하기

s = '1989, 1990' 

,

s = ['1989', '1990'] 

는 동일한에 대한 가장 빠른 하나 개 라이너 방법이 있나요?

+0

가능한 중복 [어떻게 목록 파이썬으로 문자열을 분할합니까?] (http://stackoverflow.com/questions/88613/how-do-i-split-a-string-into-a -list-python) – bernie

답변

4

사용 split method :

>>> '1989, 1990'.split(', ') 
['1989', '1990'] 

하지만 당신은 할 수 있습니다에 :

  1. 제거하여 replace

  2. 분할을 사용하여 공간 ','

예를 들면 : 당신의 캐릭터가 사용자의 입력에서 오는 경우 사용자가 쉼표 후에 공간을 명중하는 것을 잊지 수 있으므로

>>> '1989, 1990,1991'.replace(' ', '').split(',') 
['1989', '1990', '1991'] 

이 더 잘 작동합니다.

+1

"쉼표 뒤에 공백을 두는 것을 잊어 버릴 수 있으므로 문자열이 사용자 입력에서 나왔을 때 더 잘 작동합니다." 그게 도움이. – self

+0

피드백을 보내 주셔서 감사합니다. 작업을 완료하면 [질문 닫기] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)를 잊지 마십시오.이렇게하면 미답의 질문을 읽는 다른 사람들이 도움을 줄 수있는 미해결 쟁점이있는 사람을 찾을 시간이 절약됩니다 – jpic

4

함수를 호출 split 첫째 공백

제거
myList = s.split(', ') 
2
print s.replace(' ','').split(',') 

다음 콤마로 분리한다.

8

사용 지능형리스트 :

s = '1989, 1990' 
[x.strip() for x in s.split(',')] 

짧고 쉬운.

또한 asked 여러 번!

+1

이것은 모든 공간을 바꾸면 데이터에 영향을 줄 수 있으므로 분할 된 항목을 제거하는 것이 훨씬 더 좋은 방법입니다. –

1

또는 당신이 사용할 수있는 정규 표현식 :

>>> import re 
>>> re.split(r"\s*,\s*", "1999,2000, 1999 ,1998 , 2001") 
['1999', '2000', '1999', '1998', '2001'] 

표현 \s*,\s* 일치 다시 0 개 이상의 공백 문자, 쉼표와 0 개 이상의 공백 문자.

def convertToList(v): 
    ''' 
    @return: input is converted to a list if needed 
    ''' 
    if type(v) is list: 
     return v 
    elif v == None: 
     return [] 
    else: 
     return [v] 

아마이 프로젝트에 유용

1

내가 이것에 대한 일반적인 방법을 만들었습니다.

converToList(s) 
관련 문제