如何将文件中的数字添加到列表中?

时间:2019-04-15 03:03:26

标签: python list file

我正在尝试读取每行都有一个数字列表的文件。我只想获取数字列表,而不要获取对应的ID号,然后将其放入一个列表中,以便以后按字典中的频率排序。

我尝试将数字添加到列表中,但是我只能获取所需的数字,但无法正确将其添加到列表中。

我具有读取文件并仅查找要从该行读取的位置的功能。然后,我尝试将其添加到列表中,但仍会继续出现:

['23,43,56,', '67,87,34',]

我希望它看起来像这样:

[23, 43, 56, 67, 87, 34]

这是我的代码

def frequency():
f = open('Loto4.txt', "r")
list = []

    for line in f:
        line.strip('\n')
        start = line.find("[")
        end = line.find("]")
        line = line[start+1:end-1]
        list.append(line)
        print(line)

   print(list)
frequency()

这是我正在读取的文件:

1:[36,37,38,9]

2:[3,5,28,25]

3:[10,14,15,9]

4:[23,9,31,41]

5:[5,2,21,9]

3 个答案:

答案 0 :(得分:1)

尝试在append(我将其更改为extend)的行上使用列表推导,也请命名默认内置的python变量,因为{{ 1}}是一个,我将其重命名为list,但是下次请自己执行此操作,另请参阅@MichaelButscher的评论:

l

答案 1 :(得分:1)

在这种情况下,可以使用ast模块的literal_eval方法。

from ast import literal_eval
def frequency()
    result_list = list()
    with open('Loto4.txt') as f:
        for line in f:
            result_list.extend(list(literal_eval(line)))
    print (result_list)
    return result_list

ast(抽象语法树)模块的 literal_eval 方法用于安全地评估表达式节点或包含Python文字或字符串的Unicode或Latin-1编码的字符串容器展示。提供的字符串或节点只能由以下Python文字结构组成:字符串,数字,元组,列表,字典,布尔值和无。 这可用于安全地评估包含来自不受信任来源的Python值的字符串,而无需自己解析值。它无法评估任意复杂的表达式,例如涉及运算符或索引的对象。

答案 2 :(得分:0)

def frequency():
    f = open('Loto4.txt', "r")
    retval = []

    for line in f:
        line.strip('\n')
        start = line.find("[")
        end = line.find("]")
        line = line[start+1:end-1]
        retval.extend([int(x) for x in line.split(',')])
        print(line)
    print(retval)

frequency()

我将list的名称更改为retval-因为list是内置类。