如何在python中运行和检查运行

时间:2011-04-29 11:20:31

标签: python regex

我是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

1 个答案:

答案 0 :(得分:0)

你没有指明你得到了什么错误,而且你的代码没有为我生成任何错误,但我可以看到一些可能会对你的代码造成不利影响的事情。

首先,您只需要URL,而不是方法和HTTP版本(如果ipAddress或key是最后一个字段,可能会导致一些问题),因此您应该在解析之前拆分该行:

method, url, version = line.split(' ')

其次,如果网址不包含keyipAddress字段, 会出现错误,因为您的匹配检查代码有问题。您应该使用此代码:

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))