返回一行中的浮点数(Python 3.4)

时间:2015-01-11 20:35:43

标签: python regex char string-length

我是编程新手,但无法找到我认为难以做到的答案。 对于项目,我必须从文件中提取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()吗?如何准确指定浮点数和/或整数而不是该行中的所有字符?

1 个答案:

答案 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,