我在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帮助我如何摆脱列表的开头和结尾处的“'”标记?
答案 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)]