Python: посмотрите, для какого из значений в списке было указано «если есть» - PullRequest
0 голосов
/ 12 мая 2018

У меня есть список пользователей (uniqueUsers), которых я отсортировал из лог-файла.

Теперь я хотел бы увидеть, какой пользователь делает что и в какой момент и использовал это выражение if для проверки всего файла журнала, который я прочитал:

if any(x in line for x in uniqueUsers) and "borrow" in line or "return" in line:

Что я сделал после этого, так это использовал регулярное выражение для получения идентификатора пользователя из строки, но я начал задаваться вопросом, будет ли у меня какой-нибудь способ в очень короткой форме получить пользователя, которого Python нашел из это условие:

any(x in line for x in uniqueUsers)

1 Ответ

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

Переместите условие в предикат и сохраните результат (используя понимание списка вместо выражения генератора):

users_in_line = [u for u in uniqueUsers if u in line]
if users_in_line and "borrow" in line or "return" in line:
    # do something with list users_in_line
    ...

При этом используется тот факт, что пустые списки действуют как «ложные» в логическом контексте, а непустые списки (независимо от их содержимого) действуют как «правдивые».

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