将正则表达式写入文件Python

时间:2015-01-07 21:54:05

标签: python regex

对于项目,我必须提取在IFC文件中定义的颜色数据。 IFC定义了一个基于EXPRESS的实体关系模型,该模型由组织成基于对象的继承层次结构的数百个实体组成。

作为示例的IFC文件的部分:

#3510= IFCCLOSEDSHELL((#3392,#3410,#3421,#3440,#3451,#3462,#3473,#3484,#3495,#3506));
#3514= IFCFACETEDBREP(#3510);
#3517= IFCCOLOURRGB($,0.9372549,0.79215686,0.44705882)

现在我想使用Python中的正则表达式返回所有颜色数据。 到目前为止,我想出了这个(我是编程新手)

打开ifc文件

IfcFile = open('ifc2.ifc', 'r')

#defines the string 
IfcColourData = re.compile('ifccolourrgb', re.IGNORECASE)


#iterating over the ifc file
for RadColourData in IfcFile:
    if re.search(IfcColourData, RadColourData):
        print(RadColourData)
IfcFile.close()       

#writing the  data to a file
f = open('IFC2RAD.txt', 'w')
f.write(RadColourData)
f.close()

代码有效,它返回ifc文件中包含IfcColourRGB的所有行。 (我在控制台中可以看到的内容)。我正在使用Eclipse与Pydev和Python 3.4。

只有当我想将RadColourData的结果写入名为IFC2RAD.txt的文件时,它才会将ifc文件的最后一行写入IFC2RAD.txt文件。我做错了什么?

1 个答案:

答案 0 :(得分:0)

在pritinting之后将其写入文件,如下所示:

IfcFile = open('ifc2.ifc', 'r')

#defines the string 
IfcColourData = re.compile('ifccolourrgb', re.IGNORECASE)

f = open('IFC2RAD.txt', 'w')    # opne file to write here

for RadColourData in IfcFile:
    if re.search(IfcColourData, RadColourData):
        print(RadColourData)
        f.write(RadColourData)      # write here to file
IfcFile.close()       
f.close()