繁体   English   中英

Python 值太多,无法解压

[英]Python too many values to unpack

所以我想使用 python 查找两个 xyz 文件坐标之间的距离,例如 0.215822、-1.395942、-1.976109 0.648518、-0.493053、-2.101929 在 Z23EEEB4347BDD26BDDFC6B75 中,我写道,

f = open('First_Ten_phenolMeNH3+.txt', 'r')
lines = f.readlines()
a = lines[0] #(0.215822, -1.395942, -1.976109)
(x1,y1,z1) = a
b = lines[1] #(0.648518, -0.493053, -2.101929)
(x2,y2,z2) = b

distance = math.sqrt((x1-x2)**2 + (y1-y2)**2 + (z1-z2)**2)
print(distance)


f.close()

我想使用元组解包和计算距离,但是,我不断得到太多的值来解包(预计为 3),我认为这是因为 txt 文件,有没有更好的方法可以做到这一点? 问题是我需要5000个坐标文件来排序,所以一个一个地插入坐标会效率低下。

谢谢

你可以使用这个:

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

您正在尝试将字符串分配给元组。 首先尝试使用 split() :

a = lines[0].split() #(0.215822, -1.395942, -1.976109)
(x1,y1,z1) = a

此外,这会将字符串放入 x1、x2、x3 中,您需要将它们转换为浮点数:

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

line[0]是一个字符串,就像它在文本文件中一样。 您需要将其转换为浮点元组

x1, y1, z1 = (float(value) for value in line[1:-1].split(', '))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM