我正在尝试读取每行都有一个数字列表的文件。我只想获取数字列表,而不要获取对应的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]
答案 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
是内置类。