2011-02-15 6 views
0

숫자 목록이있는 Excel 파일이 있고 .txt 파일로 저장 한 다음 말하기 :파이썬 가져 오기 txt 포맷

open_file = open('list_of_numbers.txt','r') 

for number in open_file: 
    number = int(number) 
    while x < 20000: 
     if (x > number): 
      print number 
     x = x + 100 
     y = y + 100 

그리고이 오류 메시지가 나타납니다.

ValueError: invalid literal for int() with base 10: '2100.00\r\n'

어떻게 제거 할 수 있습니까? '\r\n'?

내 궁극적 인 목표는 숫자 열 옆에 다른 열을 만들고 숫자가 145 일 경우

145, '100-199' 
167, '100-199' 
1167, '1100-1199' 

같은 종류의 결과를 출력하는 것입니다.

+3

문제는 줄 바꿈 문자가 아니며 숫자는 정수가 아닙니다. 이것은 float 값입니다. 'float()'를 사용하십시오. –

답변

-1

이 시도해보십시오. 참고 자료 : http://docs.python.org/library/stdtypes.html#str.strip

+1

작동하지 않습니다.'int ("2100.00 \ r \ n".strip (string.whitespace + " '"))''시도하십시오. –

+0

Hello hello ...'''은 존재하지 않습니다; 예외는'repr (the_input_string)'을 보여주고있다. –

4

답으로 알려 드리겠습니다. 문제는 \r\n이 아닙니다. 문제는 정수로 float 값을 포함하는 문자열을 구문 분석하려고합니다. (더 줄 바꿈, 줄 바꿈 문자)를 참조하지 :

>>> int("2100.00") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: '2100.00' 

(당신이 볼 수 있듯이, 인용 부호 '이 값의 일부가 아닌, 그들은 당신이 문자열로 다루고있는 것을 나타냅니다)

>>> int("2100\r\n") 
2100 

documentation 말한다 반면 :

If the argument is a string, it must contain a possibly signed decimal number representable as a Python integer, possibly embedded in whitespace.

,

여기서 파이썬 정수 리터럴 정의는 here입니다.

솔루션 :

사용 float :

다음
>>> float("2100.00\r\n") 
2100.0 

당신이 (또한 round을 고려) 할 경우 정수로 변환 할 수 있습니다 :

>>> int(float("2100.00\r\n")) 
2100 

부동 소수점 변환 값을 정수로 변환 (documentation에서) :

Conversion of floating point numbers to integers truncates (towards zero).

1

즉각적인 문제를 해결하려면 @Felix Kling의 답변을 참조하십시오.

미래의 문제에 관심이 있으시면 계속 읽으십시오.

(1)이 \r은이 특별한 경우에 문제가되지 않지만 흥미로운 점은 다음과 같습니다. Windows에서 파일을 만들고 Linux/OSX/etc에서 읽고 있습니까?그렇다면 텍스트 파일을 "rU"(유니버설 개행)로 열어야하므로 파이썬의 입력 행은 \n뿐입니다.

(2) 어떤 경우에는 line = line.rstrip('\n')을 수행하는 것이 좋습니다. 그렇지 않은 경우 행을 분할하는 방법에 따라 원하지 않는 \n이 포함 된 마지막 입력란으로 끝날 수 있습니다.

(3) 엑셀 파일에서 직접 읽으려면 xlrd을 사용하는 것이 좋습니다. 이렇게하면 모든 번거 로움을 덜 수 있습니다. [Dis] claimer : 저는 xlrd의 저자입니다.