2012-06-25 2 views
0

a question on multiple-value elements in a config file에 대한 답은 (필자의 요구에 정확히 부합 함) "설정에서 문자열 풀기"를 제안합니다. 나는 여러 곳에서 제안 된 unpacking arguments lists에 대한 의사를 읽었지 만 이것이 내 문제와 어떻게 관련되어 있는지 이해하지 못하고있다.python :리스트에 문자열 풀기

나는이 분명해야합니다 확신 : 나는 목록 [123,456] (다를 수 있습니다 문자열에 쉼표 (,)로 구분 된 요소의 수)

당신을 감사로 변환 할 수있는 방법, 문자열 str = "123,456" 데.

+0

응답 해 주셔서 감사합니다. 나는 map() 함수로 무언가를 배웠다. 또한 "str"은 실제로 함수의 나쁜 이름입니다. 보통 thisString 버전을 사용합니다 (Murphy의 법칙에 따라 전 세계에 게시 할 때 "str"이 사용됩니다). – WoJ

답변

4

문자열 목록이나 int 목록을 원하십니까? 당신은 그냥 문자열 목록을 원하는 경우

, 그것은 매우 간단합니다 : 당신의 int 이러한 변환하려면

my_list = my_string.split(',') 

, 다음이 필요합니다 또한

my_list = map(int, my_string.split(',')) 

(사용하지 마십시오 변수 이름으로 str이 내장되어 있습니다.

+0

호기심에서 벗어나 성능 측면에서 눈에 띄는 차이가 있습니까? 'map '을 사용하거나 단순히 제시 한 구문을 사용하는 사이? – pcalcao

+0

아닙니다. 솔직하게 말하면, 보통 필자는 목록의 이해력을 사용하지만, 이번에는'map'을 타이프합니다. 왜냐하면 입력하는 것이 더 빠르기 때문입니다 :-) –

5
[int(x) for x in str.split(",")] 

당신은 기본적 문자열의 분할에 의해 생성 된 각 요소에 기능 int를 적용하고 있습니다.

단순히 str.split(',')의 결과는 ["123","456"]입니다.

다니엘 로즈 만 (Daniel Roseman)은 지적한 바에 따라 실수로 생성 된 메서드가 예를 들어 str처럼 보이지 않는 변수 또는 메서드 이름을 사용하지 않도록주의해야합니다.

0

다른 답변에도 동의하지만 inva의 경우 예외도 처리해야합니다 뚜껑이있는 숫자의 문자열 표현. 예를 들어 다음 스 니펫을 예로 들어 보겠습니다.

number_string = "123,456,x21" 
delimiter = "," 
number_list = [] 
for item in number_string.split(delimiter): 
    try: 
     my_num = int(item) 
     number_list.append(item) 
    except ValueError, e: 
     # you can choose to just pass or handle the error like so 
     print "Skipping %s: %s" % (item, e.message) 

그냥 생각해보십시오. 행운을 빕니다!