2012-06-29 5 views
1

CSV 파일에서 목록을 만들었습니다. 다음과 같이 보입니다 :대시가 포함 된 목록을 숫자로 변환

['18', '29', '0'...'0', '-14', '9'] 

처음에는 텍스트 요소가 나타났습니다. 이제, 파이썬은 적절한 숫자와 같이 목록 요소와 함께 작동하지 않습니다. 나는 수레에 요소를 구문 분석하려고 할 때마다, 예를 들어, 나는 오류 메시지 :

ValueError: could not convert string to float: - 

내 코드는 다음과 같습니다

list2=[[float(column) for column in row] for row in list1] 

또는이 :

list2 = [map(float, x) for x in list1] 

모두를 버전은 동일한 결과를 산출합니다.

ValueError: invalid literal for int() with base 10: '-' 

사람이 내가 파이썬 올바르게 번호로 대시를 구문 분석 얻는 방법을 말해 줄 수 : 나는 다른 데이터 형식을하려고하면, 내가 좋아하는 메시지를 얻을?

+0

'float ('- 14')'여기서 잘 동작합니다. 오류가 다른 곳에 있어야합니까? –

+1

목록이 정확히 무엇입니까? 왜냐하면'float ('- 14')'는'-14.0'을 제공하기 때문입니다. 목록에서 독자적으로'-'을 (를) 가지고 있기 때문에 오류가 발생한 것 같습니다.'list1'에는 다른 목록이 포함되어 있습니까? – jadkik94

+0

목록의 데이터 유형에 대해 잘 모르겠지만 두 번째 버전은 문자열에 사용할 수 있습니까? – user1492295

답변

6

당신이 만들고있는 목록이 1D 인 것처럼 보입니다. 그러나 그것을 시도하고 분석 할 때 각 요소의 각 문자를 부동 소수점으로 변환하려고하는 2D 목록으로 취급합니다 (따라서 오류가 발생합니다. 시도 중 float('-')). 이 문제를 해결하려면 다음과 선을 교체하십시오 :

list2 = map(float, list1) 

또한 목록 당신이 그것을 가지고 생각하는 구조를 가지고 있는지 확인하기 위해 그 라인 전에 print list1을 추가하는 시도해야합니다.

+0

이 생성됩니다. 정말 고마워요! – user1492295