我有一系列的Maya MEL命令,我正在尝试用Python读入、比较和转换这些命令。我能读懂台词,但提取所需数据时遇到困难。每个命令行包含一个标识符和一系列有序变量,通常只有3个,但始终与同一标识符的另一行的变量数对称。你知道吗
例如,我可能有以下文件:
// Default Lip Positions - 15_0504
setAttr("Lower_Lips.translate", 1.670481893, 10.29264716, 0.0005245589302) ;
setAttr("Lower_Lips.rotate", 80.13419306, -90, 0);
setAttr("Lower_Lips.scale", 1, 1, 1) ;
setAttr("Lower_Lips.cv[12]", -0.5607159408, -0.815908366, 10.34516376) ;
setAttr("Lower_Lips.cv[11]", -0.5142785558, -0.9430959629, 10.29982363) ;
// Default 15_0726
setAttr("Lower_Lips.translate", 1.670481893, 10.29264716, 0.0005245589302);
setAttr("Lower_Lips.rotate", 80.13419306, -90, 0) ;
setAttr("Lower_Lips.cv[11]", -0.4987127378, -0.9397891962, 10.31868927);
setAttr("Lower_Lips.scale", 1, 1, 1) ;
setAttr("Lower_Lips.cv[12]", -0.5437445653, -0.815908366, 10.36395894) ;
我需要将标识符(双引号之间的文本)和相关值提取到数据结构中。我还需要忽略注释或空行。第一个元组是这样的:
('Lower_Lips.translate', '1.670481893','10.29264716','0.0005245589302')
更复杂的命令行元组是:
('Lower_Lips.cv[12]', '-0.5607159408', '-0.815908366', '10.34516376')
然后我就可以查找重复的标识符,并对它们的两组值执行一些操作,比如查找差异。我试着用Regex实现它,并尽可能地找出标识符的模式如下:
re.compile('.*"([^"]*)".*')
您可以尝试用
f.read()
读入整个文件,然后在内容上应用此正则表达式代码:正则表达式
只需检查每一行,并从每一行中提取符合模式的必要数据。你知道吗
相关问题 更多 >
编程相关推荐