Supongo que esto será facil [Python]

Iniciado por тαптяα, 27 Octubre 2015, 01:29 AM

0 Miembros y 1 Visitante están viendo este tema.

тαптяα

Hola a todos,

tengo una dudilla rápida de Python, veréis tengo una cadena con posiciones y quiero que esa cadena pase a ser una lista de tuplas, os pongo código:

Código (python) [Seleccionar]

#asi es como lo quiero tener
path = [(37.429, -122.145),(37.428, -122.145),(37.427, -122.145),(37.427, -122.146),(37.427, -122.146)]
#pero tengo esto
str #con valor: "[(37.429, -122.145),(37.428, -122.145),(37.427, -122.145),(37.427, -122.146),(37.427, -122.146)] "


Si sabeis una manera rápida de hacerlo, si no he pensado ir pasando uno a uno a esa lista pero quizás es complicarme

muchas gracias

Saludos

tincopasan

la verdad no entiendo lo que querés decir, por lo que creo te referís al algo como esto:
Código (python) [Seleccionar]

texto= "[(37.429, -122.145),(37.428, -122.145),(37.427, -122.145),(37.427, -122.146),(37.427, -122.146)] "
print(eval(texto))

тαптяα

Quiero pasar de la cadena de texto a la lista de tuplas, pero que el formato quede exactamente el mismo

tincopasan

eso pensé! por eso el código!¿lo probaste?
hay 2 formas:
1- simple,sin módulos, insegura:

Código (python) [Seleccionar]

texto= "[(37.429, -122.145),(37.428, -122.145),(37.427, -122.145),(37.427, -122.146),(37.427, -122.146)] "
prueba = eval(texto)
print(prueba)
print(type(prueba))
print(prueba[0])
print(type(prueba[0]))


2- más completa, con módulo, segura:
Código (python) [Seleccionar]

import ast
texto= "[(37.429, -122.145),(37.428, -122.145),(37.427, -122.145),(37.427, -122.146),(37.427, -122.146)] "
otra_prueba = ast.literal_eval(texto)
print(otra_prueba)
print(type(otra_prueba))
print(otra_prueba[1])
print(type(otra_prueba[1]))


más claro que eso no sé.

тαптяα

Muchas gracias


la segunda opción me ha funcionado.

Resuelto!

Gracias

Saludos