抓取线条的一部分,直到出现空白



我有一行文本,看起来像:

2018-05-22 00:00:00 STATUS ERROR_CODE /home/etm124/script.py ANOTHER_MSG

我想做的是获取脚本名称。我不能在空白处拆分,因为STATUS可能不止一个单词,但是脚本值始终位于line的位置 [411]。我目前正在尝试做这样的事情:

with open(my_log, 'r') as fp:
for line in fp:
if line[45] == '7':    #ERROR_CODE
print line[411: {white_space?}]

您可以使用带有偏移量的str.find

offset = 411
line[offset:line.find(" ",offset)]

它很快(只有一个切片(,但问题是:如果没有空间,你会得到-1结果,你会失去 1 个字符。

另一种方法是切片然后拆分/分区(即使之后没有空间也可以工作(:

line[411:].split()[0]

一些更复杂的代码来处理"缺失空间",只执行 1 个切片和 1 个查找:

offset = 411
spacepos = line.find(" ",offset)
line[offset:spacepos if spacepos != -1 else None])

因此,如果find返回 -1,则切片到字符串的末尾。

最新更新