从具有正则表达式的日志中提取的值无法正确插入到sqlite表中

时间:2010-12-06 17:39:51

标签: python regex sqlite iteration

在SQLite中存储提取的值时出现问题 - 如何对值列表进行加法或索引以便正确插入表中。

正则表达式工作正常:

输入日志记录数据如下所示:

0.0.0(06026104)
1.6.1(0.1501)(1011111000)
1.6.1 * 32(0.1446)(1010190800)
1.8.1(02484.825)
1.8.1 * 32(02449.574)

正确的正则表达式输出:

06026104
0.1501
02484.796

with open("usage.log") as fp:
  for line in fp:
    match = re.match(r'(0\.0\.0|1\.6\.1|1\.8\.1)\(([0-9\.]+)', line)
    if not match: continue
    version, value = match.groups()
    mylist.append(value)
for item in mylist:
   t = (item)
   cursor.execute('INSERT INTO energielog(sernr) values (?)', [t])
   cursor.execute('INSERT INTO energielog(peak) values (?)', [t])
   cursor.execute('INSERT INTO energielog(kwh) values (?)', [t])

如何逐行读入SQLite?

现在每一行输入错误的表:06026104在第1行第1行和第2行第2行和第3行第3行。第二个值仅在第4行第1行和第5行第2行第4行。

例如,如果我打印t [0:3],则输出为:

060
0.01
024

它是否排出了它?如何将值1(06026104)输入表格行“sernr”,将value2(0.1501)输入表格行“peak”..

1 个答案:

答案 0 :(得分:0)

for line in fp:
        match = re.search(r'(0\.0\.0|1\.6\.1|1\.8\.1)\(([0-9\.]+)', line)
        if match: 
            version,value = match.groups() 
            extrakt.append(value)
cursor.execute('INSERT INTO energielog (sernr, peak, kwh) values (?, ?, ?)', extrakt)

运作