【问题标题】:How to convert entire table from text to int如何将整个表格从文本转换为整数
【发布时间】:2011-02-07 05:04:14
【问题描述】:

我有一个我阅读的 txt 文件:

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 行。

【问题讨论】:

  • 看起来你可能正在读取一个 csv 文件

标签: python text int


【解决方案1】:

要限制行数,请尝试使用计数器和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()返回一个整数,因此它不会修改您的变量。将 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])

【讨论】:

  • fdata.append(data) 替换为fdata.append(int(data)) 以使您的表格由整数组成。
  • int() 参数必须是字符串或数字,而不是“列表”
  • 仅供参考,在 Python 中,它们被称为“列表”,而不是“表”。它是数据类型的名称,而且不那么含糊。
  • 我以为我有 23 个元素,首先是日期,然后是 22 个元素
  • 如何在数据中使用 for 元素:element = int(element) then element [0] as str(element)
【解决方案2】:
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 

【讨论】:

  • 我认为 OP 不会理解 islice()map() 函数的作用只是。但是 +1 向我展示了 map() 的作用!
  • @Blender,文档很好,不难找到:)
  • @Blender:和fdata.append(int(x) for x in data)一样
  • 我正在努力变得友善并保持简单。我认为 OP 还没有学会列表推导......
  • @Blender,它实际上是一个生成器表达式,列表推导使用[]。也许islice 有点难学,但readlines() 可能是邪恶的,因为它会一次将整个文件读入内存。
猜你喜欢
  • 1970-01-01
  • 2012-01-10
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 2018-08-20
相关资源
最近更新 更多