2024-05-21 07:49:53 发布
网友
我有一个日志文件的部分如下所示:
"/log?action=End&env=123&id=8000&cat=baseball" "/log?action=start&get=3210&rsa=456&key=golf"
我想分析出每个部分的结果如下:
我研究过正则表达式和匹配,但是我的很多日志都有不同的序列,这让我相信这是不可能的。有什么建议吗?在
在不知道可能输入的域是什么的情况下说起来有点困难,但下面是一个猜测,什么对您有效:
log = "/log?action=End&env=123&id=8000&cat=baseball\n/log?action=start&get=3210&rsa=456&key=golf" logLines = [line.split("&") for line in log.split('\n')] logLines = [tuple(line[0].split("=")+line[1:]) for line in logLines] print logLines
输出:
这假设在第一个字符串的末尾不需要“=”。在
您可以拆分几次:
s = '/log?action=End&env=123&id=8000&cat=baseball' L = s.split("&") L[0:1]=L[0].split("=")
这显然是URL的一个片段,所以最好的解析方法是使用URL解析工具。stdlib附带了^{},这正是您想要的。在
例如:
>>> import urlparse >>> s = "/log?action=End&env=123&id=8000&cat=baseball" >>> bits = urlparse.urlparse(s) >>> variables = urlparse.parse_qs(bits.query) >>> variables {'action': ['End'], 'cat': ['baseball'], 'env': ['123'], 'id': ['8000']}
如果您真的想得到您所要求的格式,可以使用parse_qsl,然后将键值对重新连接在一起。我不知道您为什么要在第一个查询变量中包含/log,或者第一个查询变量的值与其变量分开,但是如果您坚持这样做也是可行的:
parse_qsl
/log
如果您使用的是python3.x,只需将urlparse更改为urllib.parse,其余的都是一样的。在
urlparse
urllib.parse
在不知道可能输入的域是什么的情况下说起来有点困难,但下面是一个猜测,什么对您有效:
输出:
^{pr2}$这假设在第一个字符串的末尾不需要“=”。在
您可以拆分几次:
输出:
^{pr2}$这显然是URL的一个片段,所以最好的解析方法是使用URL解析工具。stdlib附带了^{} ,这正是您想要的。在
例如:
如果您真的想得到您所要求的格式,可以使用
^{pr2}$parse_qsl
,然后将键值对重新连接在一起。我不知道您为什么要在第一个查询变量中包含/log
,或者第一个查询变量的值与其变量分开,但是如果您坚持这样做也是可行的:如果您使用的是python3.x,只需将
urlparse
更改为urllib.parse
,其余的都是一样的。在相关问题 更多 >
编程相关推荐