正则表达式Python将输出写入文件

时间:2015-01-10 21:24:17

标签: python regex

对于项目,我必须在文件中提取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()

1 个答案:

答案 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]))