Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将元组字符串数组转换为元组数组?_Python_Python 3.x_Tuples_Shapely - Fatal编程技术网

Python 如何将元组字符串数组转换为元组数组?

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

我的情况是,我试图将字符串格式的元组数组转换为元组数组

i、 e.我想从:

['(-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)]