对于项目,我必须提取在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中的正则表达式返回所有颜色数据。 到目前为止,我想出了这个(我是编程新手)
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文件。我做错了什么?
答案 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()