Почему срабатывает if в любом случае? - вопрос №5065340

import pyperclip import time import re a = '' while True: clipboard = pyperclip.paste() b = bool(re.match(r'[a-zA-z0-9]', clipboard)) print(b) b = False if clipboard != a and b == True: with open('monitoring.txt', 'a', encoding='UTF=8') as f: f.write(clipboard) f.write('\n') a = clipboard time.sleep(2)
08.02.23
1 ответ

Ответы

В данном случае условие b == True не является нужным, так как в строке b = bool(re.match(r'[a-zA-z0-9]', clipboard)) переменная b уже имеет значение типа bool. Проверка b == True эквивалентна просто проверке b.

Если вы хотите проверять, что clipboard содержит только латинские буквы и цифры, то в регулярном выражении следует указать начало и конец строки (^ и $ соответственно): re.match(r'^[a-zA-Z0-9]+$', clipboard).

В итоге ваш код может выглядеть так:

import pyperclip
import time
import re

a = ''
while True:
    clipboard = pyperclip.paste()
    b = bool(re.match(r'^[a-zA-Z0-9]+$', clipboard))
    print(b)
    if clipboard != a and b:
        with open('monitoring.txt', 'a', encoding='UTF=8') as f:
            f.write(clipboard)
            f.write('\n')
        a = clipboard
    time.sleep(2)
09.04.23

Глеб Черняк

Сейчас на сайте
Читать ответы

Олег Николаевич

Читать ответы

Arturk16

Эксперт месяца
Читать ответы
Посмотреть всех экспертов из раздела Технологии
1 ответ
14.03.24
Вопрос задан анонимно
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store