Python:将文件中的列表放入列表中

时间:2015-07-08 19:16:55

标签: python list file

我在python中非常好。

我有一个包含坐标列表的文件。好像那样:

[-122.661927,45.551161], [-98.51377733,29.655474], [-84.38042879, 33.83919567].

我正试着把它放到一个列表中:

with open('file.txt', 'r') as f:
    for line in f:
        list.append(line)

我得到的结果是

['[-122.661927,45.551161], [-98.51377733,29.655474], [-84.38042879, 33.83919567]']

可以sombody帮助我如何摆脱列表的开头和结尾处的“'”标记?

3 个答案:

答案 0 :(得分:3)

尝试使用ast.literal_eval

示例 -

import ast
lst = []
with open('file.txt', 'r') as f:
    for line in f:
        lst.extend(ast.literal_eval(line))

来自文档 -

  

<强> ast.literal_eval(node_or_string)

     

安全地评估表达式节点或包含Python文字或容器显示的Unicode或Latin-1编码字符串。提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None。

另外,请注意使用list作为变量名称是不好的,因为它会隐藏list内置函数。

答案 1 :(得分:0)

使用ast.literal_eval将字符串列表转换为列表对象,也可以使用列表推导来循环遍历文件对象,这比python循环更快,并直接返回列表:

import ast
with open('file.txt', 'r') as f:
     my_list=[ast.literal_eval(line) for line in f]

答案 2 :(得分:0)

answer = []
with open('file.txt') as infile:
    for line in infile:
        line = line.strip().rstrip('.').replace('[', ' ').replace(']', ' ').replace(',', ' ')
        parts = map(float, line.split())
        answer.extend(zip(parts, parts))

输出继电器:

In [83]: answer
Out[83]: 
[(-122.661927, 45.551161),
 (-98.51377733, 29.655474),
 (-84.38042879, 33.83919567)]