0
votes

Python trop de valeurs pour déballer

Donc, je veux trouver la distance entre deux coordonnées de fichier XYZ à l'aide de Python, On m'a donné cela par exemple 0.215822, -1.395942, -1.976109 0.648518, -0.493053, -2.101929 En python, j'ai écrit, xxx

Je veux utiliser le déballage de tuple et sur la distance de Calualte, mais je continue à avoir trop de valeurs pour déballer (attendu 3), je pense que c'est à cause de la Fichier TXT, Y a-t-il une meilleure façon de le faire ?? Le problème est que j'ai besoin d'avoir 5000 fichiers de coordonnées pour trier, il sera donc inefficace de brancher une coordonnée une par une.

merci


2 commentaires

essayez (x1, y1, z1) = eval (a)


Est-ce que vous déposez des parenthèses, telles que (0.215822, -1.395942, -1.976109) Commentaires suggèrent ou seulement , - les numéros similaires, comme la description suggèrent?


3 Réponses :


0
votes

Vous essayez d'attribuer une chaîne à un tuple. Essayez d'utiliser Split () d'abord:

x1 = float(x1)
x2 = float(x2)
x3 = float(x3)


0 commentaires

0
votes

ligne [0] est une chaîne, comme dans un fichier texte. Vous devez le convertir en tuple de flotteurs xxx


0 commentaires

1
votes

Vous pouvez utiliser ceci:

from scipy.spatial import distance
from ast import literal_eval
a = literal_eval(lines[0]) #(0.215822, -1.395942, -1.976109)
b = literal_eval(lines[1]) #(0.648518, -0.493053, -2.101929)
dst = distance.euclidean(a, b) #1.009091198622305


2 commentaires

N'utilise pas eval considéré comme une mauvaise pratique en raison de problèmes de sécurité?


En raison de problèmes de sécurité, oui, à coup sûr. Si vous pouviez vous attendre à une certaine injection dans ce fichier. ne fais pas ça. @Michailhighkhan j'ai édité ma réponse