对于项目,我必须在文件中提取rgb数据,该文件定义如下:
#98=IFCCOLOURRGB($,0.26,0.22,0.18);
我一直在使用正则表达式并在这里得到帮助我想出了这个;
IfcColourData = re.compile("IFCCOLOURRGB\(\$,([\d\.]+),([\d\.]+),([\d\.]+)")
输出:
('0.26', '0.22', '0.18')
现在,在写入文件或打印到控制台时,如何摆脱括号和撇号?
我想像这样输出:
0.26 0.22 0.18
编辑:
这是代码:
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:
print(RGB_Data.groups())
RadFile.write('mod material name' + '\n')
RadFile.write('0' + '\n')
RadFile.write('0' + '\n')
RadFile.write(str(RGB_Data.groups()) + '\n' + '\n')
#Closing IFC and RAD files
IfcFile.close()
RadFile.close()
答案 0 :(得分:0)
该输出是一个元组,有三个元素。您可以使用项目的索引来获取元组t
的元素:
print t[0], t[1], t[2]
你也可以做一点循环:
>>> import re
>>> s = "#98=IFCCOLOURRGB($,0.26,0.22,0.18);"
>>> c = re.compile("IFCCOLOURRGB\(\$,([\d\.]+),([\d\.]+),([\d\.]+)")
>>> r = re.search(s)
>>> g = r.groups()
>>> g
('0.26', '0.22', '0.18')
>>> print g[0], g[1], g[2]
0.26 0.22 0.18
>>> for e in g: print e,
...
0.26 0.22 0.18
底线:如果您将相关行更改为此行,它将起作用:
g = RGB_Data.groups()
RadFile.write('{0} {1} {2}\n\n'.format(g[0], g[1], g[2]))