Python 当文件头不在文件开头时,是否可以使用ConfigParser?
我必须用这种结构打开一个文件Python 当文件头不在文件开头时,是否可以使用ConfigParser?,python,dictionary,collections,configparser,Python,Dictionary,Collections,Configparser,我必须用这种结构打开一个文件 Date/time,Field1_avg,Field1_std,Field2_max,Field2_min,Field3_std,Field3_avg 2014-11-19 23:50:00,3.5,0,1,4.8,0.9,9.6,0.75 2014-11-20 23:50:00,4.5,0,1,4.3,0.9,9.1,0.75 2014-11-21 23:50:00,4.5,0,1,4.3,0.9,9.1,0.75 #MOREDATA and before the
Date/time,Field1_avg,Field1_std,Field2_max,Field2_min,Field3_std,Field3_avg
2014-11-19 23:50:00,3.5,0,1,4.8,0.9,9.6,0.75
2014-11-20 23:50:00,4.5,0,1,4.3,0.9,9.1,0.75
2014-11-21 23:50:00,4.5,0,1,4.3,0.9,9.1,0.75
#MOREDATA and before the headers start a line empty
#line empty
[header]
name='blabla'
height=23
[header1]
#and so on
然后第一行是表中字段的名称
从表的第二行到不定行数据
然后一行空
最后是包含信息的不同标题
问题是读取文件,在循环中读取第一行,然后创建一个带有pandas的表
然后退出循环,创建带有默认值的字典,因为信息与小节不同,我希望在最后有一个字典,每个键具有相同数量的值。如果节中的值不存在,请添加“”或0
ConfigParser似乎是使用默认值创建字典的最佳解决方案,但问题在于开头的信息。它不是标题,然后给出一个错误
有什么想法吗
谢谢Configparser有一个
.readfp()
方法,您可以使用:
import ConfigParser
with open('cfgdata.ini', 'rb') as fp:
while fp.readline().strip() != "": # skip all initial lines (or pass them to Pandas..)
pass
p = ConfigParser.ConfigParser()
p.readfp(fp)
print p.sections()
print p.has_section('header')
唯一的问题是while循环需要使用fp.readline()
,因为这是ConfigParser
内部使用的