使用python为字段及其值解析文本文件

时间:2016-02-23 09:24:13

标签: regex mongodb python-2.7

我是使用python进行编码的新手,一步一步地学习它。我有一个解析文本文件和更新数据库的任务。该文件将具有一些状态     门票摘要:     频率 :     采取的行动:<像“重启服务器”这样的东西>     状态:

我想解析此文件,获取“ticket summary”,“frequency”等字段的值,并将它们放入数据库中,其中定义了列的列。我正在阅读python正则表达式和子字符串解析,但没有找到如何开始。需要帮助

1 个答案:

答案 0 :(得分:0)

由于你没有包含一个例子,我将提供一个在这里使用。我假设你已经安装了mongodb,pymongo并且有一个在本地运行的实例。例如,我选择的文件格式如下:

Frequency: restarted server, Action taken- none, Status: active

代码将使用正则表达式来提取字段。对于演示,请查看此处:regex demo

import pymongo
import re

client = pymongo.MongoClient()
db = client['some-db']
freqgroup = re.compile(r"(?P<Frequency>Frequency[\:\-]\s?).*?(?=,)", flags=re.I)
actgroup = re.compile(r"(?P<ActionTaken>Action\sTaken[\:\-]\s?).*?(?=,)", flags=re.I)
statgroup = re.compile(r"(?P<Status>Status[\:\-]\s?).*", flags=re.I)

with open("some-file.txt", "rb") as f:
    for line in f:
        k = re.search(freqgroup, line)
        db.posts.insert_one({"Frequency": line[k.end("Frequency"):k.end()]})
        k = re.search(actgroup, line)
        db.posts.insert_one({"ActionTaken": line[k.end("ActionTaken"):k.end()]})     
        k = re.search(statgroup, line)
        db.posts.insert_one({"Status": line[k.end("Status"):k.end()]})