python - 从 line.split() 中提取多个不相邻的字段

标签 python list split indices

尝试使用 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/

相关文章:

java - 如何轻松解析字符串中双引号内的所有表达式?

python - 使用 re.split() 将一个字符串拆分为多个字符串

python - 使用 Pandas 通过键标识符转置多列

python - 为什么在 Python 3.6 alpha 中文字格式的字符串(f 字符串)如此缓慢? (现在在 3.6 稳定版中修复)

python - 将对象从 C 返回给 Python

python - 如何使用自定义条件对一个列表列表进行排序?

python - 在 python 中拆分带有日期的数组

python - 具有定向字符的任意字符串的多序列比较

python - 显示背包python递归的最大值和项目

Python,对坐标对进行操作的有效方法