尝试使用 Python 改进 Shoutcast 的日志解析器。
鉴于此日志条目行:
line = "207.86.121.131 207.86.121.131 2012-11-27 13:02:17 /stream?title=Joe%20Bonamassa%20%2D%20I%20Got%20All%20You%20Need 200 iTunes%2F10%2E7%20%28Windows%3B%20Microsoft%20Windows%207%20x64%20Home%20Premium%20Edition%20Service%20Pack%201%20%28Build%207601%29%29%20AppleWebKit%2F536%2E26%2E9 622592 27 184464"
我将如何提取字段 0、5、8
?
我的输出应该是 207.86.121.131 200 27
当我单独尝试 line.split()[0]
(或 5 或 8)时,我得到了那个字段,
但是如果我尝试 line.split()[0,5,8]
我会收到一条错误消息
TypeError: list indices must be integers, not tuple
如果我改为尝试 line.split()[[0,5,8]]
我会收到一条错误消息
TypeError: list indices must be integers, not list
那么,有没有办法只使用一个 line.split 来提取这 3 个字段?
最佳答案
您可以使用itemgetter
。
>>> from operator import itemgetter
>>> itemgetter(0,5,8)(line.split())
('207.86.121.131', '200', '27')
关于python - 从 line.split() 中提取多个不相邻的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24277955/