Как преобразовать всю таблицу из текста в int - PullRequest
0 голосов
/ 07 февраля 2011

У меня есть текстовый файл, с которым я читаю:

fdata =[]
with open(fn,'rb') as fo:
     for i in xrange(1):
           fo.next()
     for line in fo:                       
           data = line.split(',')
           data = data[:23]
           fdata.append(data)    
     print fdata 

Я хотел бы преобразовать всю таблицу в числа из строки. И ограничить размер таблицы до XXX строк.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2011
from itertool import islice
fdata =[]
with open(fn,'rb') as fo:
     for i in xrange(1):
           fo.next()
     for line in islice(fo,0,XXX):                       
           data = line.split(',')
           data = data[:23]
           fdata.append(map(int,data))    
     print fdata 
2 голосов
/ 07 февраля 2011

Чтобы ограничить строки, попробуйте выполнить итерацию с использованием счетчика и readlines():

maxlines = 100
lines = f.readlines()

if maxlines > len(lines):  maxlines = len(lines)

for i in xrange(maxlines):
  line = lines[i]

  # Do your stuff...

Для преобразования строки в число (в данном случае целое число. float() для чисел с плавающей запятой):

print '9000' == 9000 # False.
print int('9000') == 9000 # True

Таким образом, чтобы ваша таблица содержала только целые числа, преобразуйте каждую строку (после разбиения) в целое число. int() only возвращает целое число, поэтому оно не изменяет вашу переменную. Замена fdata.append(data)) на fdata.append(int(data() должна помочь.


Хорошо, чтобы преобразовать весь список в целые числа, просто выполните итерации по каждому из этих 23 элементов, чтобы преобразовать их в целые числа. Это работает для произвольного списка строк:

for element in data:
  element = int(element)

Чтобы преобразовать ваш список в целые числа, но чтобы исключить первый элемент, выполните цикл:

for i in xrange(1, len(data)): # I used 1 because 0 is the first element. This skips it.
  data[i] = int(data[i])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...