我是编程新手,但无法找到我认为难以做到的答案。 对于项目,我必须从文件中提取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()吗?如何准确指定浮点数和/或整数而不是该行中的所有字符?
答案 0 :(得分:1)
你的问题也不是很清楚,为了更好的结果请澄清。看看你是否正在寻找
import re
a='IFCCOLOURRGB($,0.26,0.22,0.18,1)'
d= (re.findall(r'[-+]?\d*\.\d+|\d+', a))
d[0]=len(d)
for num in d:
print num,