我有一个具有三个行的文本文件,并且希望每行存储在一个数组中的第一个数字,第二个行中的第二行,等等,等等。并将其打印出阵列。文本文件:
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是列表的列表,如果您想这样做,可以作为二维数组访问。