将数字从文本文件传输到数组

时间:2017-12-12 16:21:25

标签: python arrays python-3.x

我有一个文本文件有三行,并希望每行存储在一个数组中的第一个数字,第二个存储在另一个数组,所以等等第四。并为它打印出阵列。 文本文件:

0,1,2,3,0
1,3,0,0,2
2,0,3,0,1

我使用的代码(为了简单起见,我只展示了第一个数组):

f=open("ballot.txt","r")
for line in f:
    num1=line[0]
    num1=[]
    print(num1)

我希望它的结果打印出每行的第一个数字:

0
1
2

    我得到的实际结果是

[]
[]
[]

2 个答案:

答案 0 :(得分:1)

您在行中读取并将该行的第一个字符分配给该变量,但随后用空列表覆盖该变量。

f=open("ballot.txt","r")
for line in f:
    num1=line.strip().split(',')[0] # splits the line by commas and grabs 1st val
    #    ^^^^^^^^^^^^^^^^^^^^^^^^^^
    print(num1)

这应该做你想要的。在您的简单情况下,它是索引0,但您可以索引任何值。

由于该文件是逗号分隔的,因此用逗号分隔该行将为您提供所有列。然后你索引你想要的那个。 strip()调用会删除换行符(否则会挂掉最后一列的值)。

至于大图,尝试从每列获取列表,将整个文件读入数据结构。然后处理数据结构以制作列表。

def get_column_data(data, index):
    return [values[index] for values in data]

with open("ballot.txt", "r") as f:
    data = f.read()
data_struct = []
for line in data.splitlines():
    values = line.split(',')
    data_struct.append(values) 
print(data, '\nData Struct is ', data_struct)
print(get_column_data(data_struct, 0))
print(get_column_data(data_struct, 1))

get_column_data函数解析数据结构并列出正确列的值列表(通过列表解析)。

最后,data_struct是一个列表列表,如果你想这样做,可以作为一个二维数组进行访问。

答案 1 :(得分:1)

看起来你重置了num1吗?每次在打印之前将num1重置为空列表。

f=open("ballot.txt","r")
for line in f:
    num1=line[0]
    #num1=[] <-- remove this line
    print(num1)

这将返回该行的第一个字符。如果你想要第一个数字(即第一个昏迷前的所有数字),你可以试试这个:

f=open("ballot.txt","r")
for line in f:
    num1=line.split(',')[0]
    print(num1)