抓住一条线的部分直到一个空白区域

时间:2018-05-22 12:50:56

标签: python python-2.7

我有一行文字看起来像:

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?}]

1 个答案:

答案 0 :(得分:2)

您可以将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,则切换到字符串的末尾。