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



我有一个具有三个行的文本文件,并且希望每行存储在一个数组中的第一个数字,第二个行中的第二行,等等,等等。并将其打印出阵列。文本文件:

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

我得到的实际结果是

[]
[]
[]

看起来您重置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)

您在线路上读取并将行的第一个字符分配给变量,但是您将变量用空列表覆盖。

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()呼叫摆脱了Newline字符(否则将挂起最后一列值)。

至于全局,试图从每一列获取列表,将整个文件中的读取到数据结构中。然后处理数据结构以列出您的列表。

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是列表的列表,如果您想这样做,可以作为二维数组访问。

最新更新