2015-02-19 5 views
0

Я читаю длинный список чисел из текстового файла.Чтение целых чисел из txt-файла; не записывается как itegers

Цифры:

12 
42 45 
78 30 98 
12 45 12 30 ... and so on 

Я загрузки чисел:

a = open('file', 'r') 
lines = a.read() 

Когда я типа, строки [0] я должен получить результат 12, но я получаю 1 вместо ,

Когда я проверяю тип номеров я ввезенных, я получаю:

<type 'str'> 

Я попытался изменить тип номера по:

lines = int(lines) 

Но я получаю это ошибка:

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

Почему python импортирует строки, когда они являются числами ?! Как мне изменить это ... или нужно импортировать данные другим способом?

Спасибо :)

ответ

3

Try:

with open('file') as f: 
    array = [] 
    for line in f: 
     array.append([int(x) for x in line.split()]) 

a.read() принимает аргумент размера файла и только возвращает тип строки

+0

Извините, произошла ошибка .... w, h = [int (x) для x в f.readline().split()] # прочитайте первую строку ValueError: вам нужно больше 1 значения для распаковки – Chef1075

+0

@ Chef1075 Да, это была моя ошибка, у меня был аналогичный код, который только что скопирован и вставлен, не задумываясь над вашими переменными. Я отредактировал свой ответ. – RPBruiser

+0

Да! Скобки! Спасибо :) – Chef1075

3

содержимого файла являются строками, а не число, так что вам нужно будет включать в себя код, чтобы перевести их.

Если ваши номера всех разделенных пробелами, вы можете сделать это:

a = open('file', 'r') 
for line in a: 
    numbers = [ int(x) for x in line.split() ] 
    # Do something with numbers 

Последняя строка разбивается на следующие части:

line.split() # Прервать строку в N элементов отделенных друг от друга пробелами

Int (х) # превратить строковое представление в целое число

[Int (х) при х в line.split()] # Создать список элем где каждый элемент является результатом int (x) в каждой отдельной части строки, разделенной пробелами.

+0

Это работает, и я понимаю причины этого! Однако я теряю структуру своих данных. Где раньше было 1 номер \ n 2 номера \ n 3 номера ... теперь это один длинный список. Все еще правильно! – Chef1075

2

Попробуйте использовать

a = open('file', 'r') 
lines = a.readlines() 

Таким образом, вы получите список-го числа. С другой стороны, вы получаете

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

, потому что вы получили символ новой строки или carrige возврата carácter

Смежные вопросы