【发布时间】:2015-03-09 14:49:38
【问题描述】:
我是编程新手,但对于我认为不难的事情找不到答案。 对于一个项目,我必须从指定如下的文件中提取 RGB 值:
#98=IFCCOLOURRGB($,0.26,0.22,0.18);
到目前为止,我已经用正则表达式制作了一个脚本,它会产生这个输出:
0.26 0.22 0.18
现在我想将该行中的数字数量作为行前的整数返回,如下所示:
3 0.26 0.22 0.18
如果在该行中添加了额外的数字,即使它是 0,它也应该加起来
比如我想退货
0.26 0.22 0.18 0 0
作为
5 0.26 0.22 0.18 0 0
到目前为止的代码:
import re
IfcFile = open('IfcOpenHouse.ifc', 'r')
IfcColourData = re.compile("IFCCOLOURRGB\(\$,([\d\.]+),([\d\.]+),([\d\.]+)")
RadFile = open('IFC2RAD.rad', 'w')
for RadColourData in IfcFile:
RGB_Data = IfcColourData.search(RadColourData)
if RGB_Data:
RadFile.write('mod material name' + '\n')
RadFile.write('0' + '\n')
RadFile.write('0' + '\n')
g = RGB_Data.groups()
RadFile.write('{0} {1} {2}\n\n'.format(g[0], g[1], g[2]))
IfcFile.close()
RadFile.close()
我应该使用 len() 吗?以及如何准确指定浮点数和/或整数的数量,而不是该行中的所有字符?
【问题讨论】:
-
零是从哪里来的?您的正则表达式没有捕获任何单个数字
-
你的意思是行尾的零?它们定义了输出中材质的镜面反射和粗糙度。并非每一行都有这两个零。
-
是的,但是它们来自哪里,添加一些示例输入
-
抱歉,我将它们“手动”放在那里作为示例。很抱歉让您感到困惑。
-
不知道他们来自哪里,就不可能回答你的问题
标签: python regex char string-length