如何读取文件并将数据存储到lis中

2024-09-25 12:21:43 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有这种格式的文件:

1 2 3 4 5
6 7 8 9 10

用Python读取文件并将每个数字存储到列表中的正确方法是什么?

x_table = []
for eachLine in filename_1:
#Set up temp variable
    x_table.append([])
    tmpStr = ''
#Loop through each character in the line
    for char in eachLine:
    #Check whether the char is a number
        if char.isdigit():
            tmpStr += char
        elif char == ' ' and tmpStr != '':
            x_table[eachLine].append(int(char))

我得到这个错误:

type: list indices must be integers, not str.

Tags: 文件the方法in列表for格式table
3条回答

如果需要数字处理,此函数将起作用:http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html 除非您需要更改数组的数组(数据被加载到numpy.ndarray中,如果您需要数字和数学处理,这是有效的)。

另一个解决方案:

如果需要数组数组,并且不想更改核心代码,请注意for中的每个元素。。。在。。。不是索引位置,而是实际元素。

要获取索引位置,请执行以下操作:对于枚举中的i,v(文件名1):

即使这样,如果filename_1是一个字符串,也不好。您应该在那里指定一个文件对象(它是iterable的,并且是逐行的)。

对于每一行(每行),您可以将以下代码附加到x_表:

x_table.append([int(s) for s in eachLine.split()])
#eachLine.split() will break eachLine by whitespace-strings.

记住在这里捕获异常。

完整代码:

x_table = []
for eachLine in open(filename_1, "r"):
    x_table.append([int(k) for k in eachLine.split()])

numpy版本的完整代码:

import numpy
x_table = numpy.loadtxt(open(filename_1,"r").read())

记住在这两个代码中捕获异常。

x_table = []
for line in filename_1:
    numbers = map(int, line.split(' '))
    x_table.append(numbers)

注意:

  • 多位数
  • 负数(减号)

可以使用正则表达式。这个例子将解析小数、负数和排除文本。

"""Contents of test.txt:
1 2 3.14 4 5 0 text
6 7 -8 9 10 -99.99
some other text
1.0 0.5
"""

import re

filename_1 = open("test.txt", 'r')
values = re.findall(r"-*\d+\.*\d*", filename_1.read())

print values

注意,这将返回一个列表。然后可以将值转换为int或float。

相关问题 更多 >