2012-05-24 2 views
0

텍스트 파일에서 일부 숫자를 읽고 부동 소수점 목록으로 변환하려고합니다.하지만 아무 것도 시도하지 않아도 올바르게 작동하는 것 같습니다. 여기 중첩 목록 및 부동 소수점으로 변환

지금 내 코드입니다 :

[['12.2'], ['26'], ['34.2'], ['5.0'], ['62'], ['62'], ['62.6']] 

(모든 괄호 포함)

하지만 어느와 수레의리스트로 변환 할 수 없습니다

python_data = open('C:\Documents and Settings\redacted\Desktop\python_lengths.txt','r') 
python_lengths = [] 
for line in python_data: 
    python_lengths.append(line.split()) 
python_lengths.sort() 

print python_lengths 

그것은 반환 같은 일반 명령 :

python_lengths = float(python_lengths) 

나 :

float_lengths = [map(float, x) for x in python_lengths] 

가 중첩 또는 뭔가하는 것 때문에?

답변

5

.split()은 요소가 하나만 있어도 항상 항목 목록을 반환하기 때문에 이러한 현상이 발생합니다. python_lengths.append(line.split())python_lengths.extend(line.split())으로 변경하면 예상대로 평판을 얻을 수 있습니다. eumiro의 대답 @

+0

/스레드. 정말 고마워, 너는 잘 몰라 !! 그 한마디로 지난 4 시간 동안이 프로그램을 끝내지 못하게했습니다. – user1367212

0

는 정확하지만 여기에 도움이 될 수 있습니다 뭔가 다른 : 당신도 Windows에서, 슬래시를 사용할 수 있습니다

numbers = [] 
with open('C:\Documents and Settings\redacted\Desktop\python_lengths.txt','r') as f: 
    for line in f.readlines(): 
     numbers.extend(line.split()) 

numbers.sort() 
print numbers 
0
def floats_from_file(f): 
    for line in f: 
     for word in line.split(): 
      yield float(word) 

with open('C:/Documents and Settings/redacted/Desktop/python_lengths.txt') as f: 
    python_lengths = list(floats_from_file(f)) 

python_lengths.sort() 

print python_lengths 

참고. 역 슬래시를 사용하려면 문제가 발생하지 않도록 "원시"문자열을 사용해야합니다. 어떤 종류의 문제입니까? 음, 일부 문자는 백 슬래시와 함께 특별합니다. 예를 들어 \n은 개행을 나타냅니다. 일반 인용 부호로 경로를 지정하고 디렉토리 이름 중 하나가 n으로 시작하면 거기에 개행 문자가 생깁니다. 해결 방법은 백 슬래시를 두 배로 늘리거나 원시 문자열을 사용하거나 슬래시를 사용하는 것입니다.