我无法解决如何从Pymel中的复杂文本文件中提取浮点值的问题。我不是程序员,我是一名艺术家,但是我需要为特定的工作流程创建脚本,并且我对python有初学者的知识。
我的目标:使用从另一个程序的特定文本文件解析的(x,y,z)坐标在3D空间中创建对象。
实施例。文本文件:
第1点8.740349 -4.640922 103.950059
第2点8.520906 3.447561 116.580496
第3点4.235010 -7.562914 99.632423
等等
我的文本文件中的点#和矢量浮点数之间有更多的空间。
我想创建一个字典,用于在我的3D程序中创建对象。
例如,
myDictionary = {(第1点),[8.740349,-4.640922,103.950059])等。}。
到目前为止,这是我的代码段:
def createLocators():
global filePath
global markerNum
global markerCoord
print "getting farther! :)"
with open(filePath,'r') as readfile:
for line in readfile:
if "point" in line:
Types = line.split(' ')
markerNum = [Type[1] for Type in Types]
markerCoord = [Type[2] for Type in Types]
print markerNum, markerCoord
正如您在代码中看到的那样,信息之间的空间很长。我想如果我可以删除该空间,我可以获得两个更容易使用的数据集。文本文档中还有更多行我不关心,因此if语句只过滤以“point”开头的行。当我运行createLocator()进行测试以查看它是否将行拆分为我的两个列表时它运行正常,但打印看起来对我来说是空的。
离。
[''] ['']
我已经尝试使用谷歌搜索和搜索答案,并搜索Pymel和常规python文档,了解我做错了什么或更好的方法,但我不得不承认我的知识范围在这里结束。
我做错了什么?是否有更好,更有效的方法来提取我需要的数据,我缺少这些数据?
感谢阅读!
答案 0 :(得分:0)
首先,您可能不希望分裂那大量的空间。实际上你几乎肯定想要的是只使用没有参数的line.split()
,因为这将拆分任何类型的所有文本,以及任何数量的空白。即:
>>> 'A B C\t\n\t D'.split()
['A', 'B', 'C', 'D']
然后,假设您显示的格式正确,您需要获取Types[2:5]
,即Types
的第二,第三和第四个元素,作为坐标。
除此之外,您不应该为本地变量使用大写名称,也不应该使用全局变量。请改用函数参数,并将Types
重命名为split_line
或其他内容。