Хватая части линии до пустого пространства - PullRequest
0 голосов
/ 22 мая 2018

У меня есть строка текста, которая выглядит примерно так:

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

Что я хочу сделать, это взять имя скрипта.Я не могу разбить пробел, потому что STATUS может быть более чем одним словом, однако значение скрипта всегда находится в местоположении [411] из line.В настоящее время я пытаюсь сделать что-то вроде:

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

1 Ответ

0 голосов
/ 22 мая 2018

вы можете использовать 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, срез до конца строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...