我有一个文本文件有三行,并希望每行存储在一个数组中的第一个数字,第二个存储在另一个数组,所以等等第四。并为它打印出阵列。 文本文件:
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
我得到的实际结果是
[]
[]
[]
答案 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)