Pymel:如何从复杂的 .TXT 文件中提取这些矢量浮点数?
Pymel: How do I extract these vector floats from a complex .TXT file?
我无法思考如何从 Pymel 中的复杂文本文件中提取浮点值。我不是程序员,我是艺术家,但是我需要为特定的工作流程创建脚本,并且我对 python.
有初学者水平的知识
我的目标:使用从另一个程序的特定文本文件解析的 (x,y,z) 坐标创建 3D space 对象。
例如。文本文件:
point 1 8.740349 -4.640922 103.950059
point 2 8.520906 3.447561 116.580496
point 3 4.235010 -7.562914 99.632423
etc., etc
在我的文本文件中,点 # 和矢量浮点数之间还有很多 space。
我想创建一个字典,用于在我的 3D 程序中创建我的对象。
例如,
myDictionary = {(point 1),[8.740349,-4.640922,103.950059]), etc. }.
到目前为止,这是我的代码片段:
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
代码中可以看到,信息之间的space很长。我想如果我可以删除 space 我可以获得两个更易于使用的数据集。文本文档中还有很多我不关心的行,因此 if 语句只过滤以 "point" 开头的行。当我 运行 createLocator() 测试它是否将行拆分为我的两个列表时,它 运行 没问题,但打印对我来说看起来是空的。
例如
[' '] [' ']
我已经尝试在 SO 上使用谷歌搜索和搜索答案,并在 Pymel 和常规 python 文档中搜索我做错了什么或更好的方法,但我不得不承认我的知识范围到此结束。
我做错了什么?有没有更好、更有效的方法来提取我需要但丢失的数据?
感谢阅读!
首先,您可能不希望拆分那一大串空格。事实上,您几乎肯定想要的是不带任何参数地使用 line.split()
,因为这将拆分任何种类和数量的空白的所有文本。即:
>>> 'A B C\t\n\t D'.split()
['A', 'B', 'C', 'D']
然后,假设你显示的格式是正确的,你应该需要得到Types[2:5]
,即Types
的第二个、第三个和第四个元素作为坐标。
除此之外,您不应该为局部变量使用大写名称,也不应该使用全局变量。改用函数参数,并将 Types
重命名为 split_line
或其他名称。
我无法思考如何从 Pymel 中的复杂文本文件中提取浮点值。我不是程序员,我是艺术家,但是我需要为特定的工作流程创建脚本,并且我对 python.
有初学者水平的知识我的目标:使用从另一个程序的特定文本文件解析的 (x,y,z) 坐标创建 3D space 对象。
例如。文本文件:
point 1 8.740349 -4.640922 103.950059
point 2 8.520906 3.447561 116.580496
point 3 4.235010 -7.562914 99.632423
etc., etc
在我的文本文件中,点 # 和矢量浮点数之间还有很多 space。
我想创建一个字典,用于在我的 3D 程序中创建我的对象。
例如,
myDictionary = {(point 1),[8.740349,-4.640922,103.950059]), etc. }.
到目前为止,这是我的代码片段:
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
代码中可以看到,信息之间的space很长。我想如果我可以删除 space 我可以获得两个更易于使用的数据集。文本文档中还有很多我不关心的行,因此 if 语句只过滤以 "point" 开头的行。当我 运行 createLocator() 测试它是否将行拆分为我的两个列表时,它 运行 没问题,但打印对我来说看起来是空的。
例如
[' '] [' ']
我已经尝试在 SO 上使用谷歌搜索和搜索答案,并在 Pymel 和常规 python 文档中搜索我做错了什么或更好的方法,但我不得不承认我的知识范围到此结束。
我做错了什么?有没有更好、更有效的方法来提取我需要但丢失的数据?
感谢阅读!
首先,您可能不希望拆分那一大串空格。事实上,您几乎肯定想要的是不带任何参数地使用 line.split()
,因为这将拆分任何种类和数量的空白的所有文本。即:
>>> 'A B C\t\n\t D'.split()
['A', 'B', 'C', 'D']
然后,假设你显示的格式是正确的,你应该需要得到Types[2:5]
,即Types
的第二个、第三个和第四个元素作为坐标。
除此之外,您不应该为局部变量使用大写名称,也不应该使用全局变量。改用函数参数,并将 Types
重命名为 split_line
或其他名称。