我是Python的新手。我需要编写一个python脚本来解析apache的请求url并从中查找一些数据。
脚本是:
#!/usr/bin/python
import sys
import re
for line in sys.stdin:
ipAddress = re.search('ipAddress=([^&]*)', line)
key = re.search('key=([^&]*)', line)
if len(ipAddress.group(1)) != 0 and len(key.group(1)) != 0:
print "%s\t%s" % (ipAddress.group(1), key.group(1))
请告诉我脚本中的错误以及如何使用以下输入进行测试:
GET request?key=xxxxxxxxxx&ipAddress=000.000.000.00&id=blah... HTTP/1.1
答案 0 :(得分:0)
你没有指明你得到了什么错误,而且你的代码没有为我生成任何错误,但我可以看到一些可能会对你的代码造成不利影响的事情。
首先,您只需要URL,而不是方法和HTTP版本(如果ipAddress或key是最后一个字段,可能会导致一些问题),因此您应该在解析之前拆分该行:
method, url, version = line.split(' ')
其次,如果网址不包含key
或ipAddress
字段, 会出现错误,因为您的匹配检查代码有问题。您应该使用此代码:
for line in sys.stdin:
method, url, version = line.split(' ')
ipAddress = re.search('ipAddress=([^&]*)', url)
key = re.search('key=([^&]*)', url)
if ipAddress and key:
print "%s\t%s" % (ipAddress.group(1), key.group(1))