【问题标题】:Transferring numbers from a text file to an array将数字从文本文件传输到数组
【发布时间】:2017-12-12 16:21:24
【问题描述】:

我有一个包含三行的文本文件,并且希望每行的第一个数字存储在一个数组中,第二个存储在另一个数组中,依此类推,第四个。并让它打印出数组。 文本文件:

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 重置为空列表
  • 那些不是数组,它们是列表

标签: python arrays python-3.x


【解决方案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)

【讨论】:

    【解决方案2】:

    您很好地阅读了该行并将该行的第一个字符分配给该变量,但随后您用一个空列表覆盖了该变量。

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

    【讨论】:

    • 这有效地做到了'0'.split(',')
    • @Blurp - 感谢您发现错误。答案已更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多