Python 如何将元组字符串数组转换为元组数组?
我的情况是,我试图将字符串格式的元组数组转换为元组数组 i、 e.我想从:Python 如何将元组字符串数组转换为元组数组?,python,python-3.x,tuples,shapely,Python,Python 3.x,Tuples,Shapely,我的情况是,我试图将字符串格式的元组数组转换为元组数组 i、 e.我想从: ['(-109.080842,45.002073)','(-105.91517,45.002073)','(-109.080842,45.002073)'] 到 这样做的目的是能够创建一个形状优美的多边形。当元组是字符串时,它抛出一个错误。从字符串到实际元组对象的最佳方式是什么?它们是文本,因此您可以安全地评估它们: >>> import ast >>> L = ['(-109.08
['(-109.080842,45.002073)','(-105.91517,45.002073)','(-109.080842,45.002073)']
到
这样做的目的是能够创建一个形状优美的多边形。当元组是字符串时,它抛出一个错误。从字符串到实际元组对象的最佳方式是什么?它们是文本,因此您可以安全地评估它们:
>>> import ast
>>> L = ['(-109.080842,45.002073)','(-105.91517,45.002073)','(-109.080842,45.002073)']
>>> [ast.literal_eval(x) for x in L]
[(-109.080842, 45.002073), (-105.91517, 45.002073), (-109.080842, 45.002073)]
这是ast.literal\u eval的函数方式:
from ast import literal_eval
lst = ['(-109.080842,45.002073)','(-105.91517,45.002073)','(-109.080842,45.002073)']
res = list(map(literal_eval, lst))
# [(-109.080842, 45.002073), (-105.91517, 45.002073), (-109.080842, 45.002073)]
您可以使用
ast.literal\u eval
解析内置Python对象的元组。但是,在运行之前,为什么首先要将元组的repr作为字符串?如果您是通过这种方式将数据写入文件来存储数据,那么有更好的方法来存储数据。@abarnert从其他人那里得到的糟糕编码,他们操纵字符串以奇数格式获取数据。事实证明,我可以直接对postgres polygon类型返回的字符串执行ast.literal_求值,一切正常。但是literal\u eval
无论如何对它们都有效。嗯,奇怪的是,当我在执行ast.literal\u eval后打印元组字符串数组时,它仍然将它们显示为字符串,但在将其传递到shapely多边形时确实有效。谢谢@阿伯内特。直到。
from ast import literal_eval
lst = ['(-109.080842,45.002073)','(-105.91517,45.002073)','(-109.080842,45.002073)']
res = list(map(literal_eval, lst))
# [(-109.080842, 45.002073), (-105.91517, 45.002073), (-109.080842, 45.002073)]