На какой именно элемент массива произошло совпадение

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
здравствуйте
представьте есть текстовый файл из 500 000 строк
его создают люди, которые иногда ошибаются, нужно их проверить и указать об ошибках, ошибки в файле могут быть разные:
..
==
!!
их много
поэтому рождается:
Код:
if '..' in s2: print(f'в файле: {f2} обнаружено: «..»')
и таких строк нужно также много, можно пойти путём:
Код:
if ('..', '==', '!!') in s2: print(f'в файле: {f2} обнаружено: «..» или «==» или «!!» ')
я такое резюме считаю плохим тоном, поэтому хотел спросить как точно указать какая из ошибок найдена?
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
спасибо уже не надо
Код:
s = '00..00!!00=='
[print(f'в файле обнаружено «{elem}»') for elem in [x  for x in ('..', '==', '!!') if x in s]]
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Python:
if ('..', '==', '!!') in s2: print(f'в файле: {f2} обнаружено: «..» или «==» или «!!» ')
Такой код работать не будет, так как с помощью оператора in можно искать только строку.
как точно указать какая из ошибок найдена?
Можно сделать список ошибок, проходить по нему в цикле и проверять ее наличие в тексте:
Python:
f = 'file.txt'
errors = ['..', '==', '!!']

with open(f, 'r', encoding='utf-8') as f2:
    for s in f2:
        for e in errors:
            if e in s:
                print(f'в файле: {f} обнаружено: «{e}»')
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
спасибо, бес попутал, подумал, что НЕ змее без разницы))
Код:
if ('..', '==', '!!') in s2: print(f'в файле: {f2} обнаружено: «..» или «==» или «!!»') #НЕ правильно
if s2 in ('..', '==', '!!'): print(f'в файле: {f2} обнаружено: «..» или «==» или «!!»') #Правильно
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
подскажите, как это:
Код:
s = '00..00!!00=='
for e in ['..', '==', '!!']:
    if e in s: print(f'в файле обнаружено: «{e}»')
в одну строку записать? имеется ввиду последние две строки))
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
929
207
43
20
Москва
Или так
Python:
[print(f'В файле обнаружено «{x}»') for x in ('..', '==', '!!') if x in s]
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
[print(f'В файле обнаружено «{x}»') for x in ('..', '==', '!!') if x in s]
я так и сделал
 
  • Мне нравится
Реакции: Vershitel_sudeb

Форум IT Специалистов