Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
8 / 3 / 0
Регистрация: 04.09.2011
Сообщений: 108

Условие с регулярками

18.01.2016, 16:09. Показов 1521. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не получается создать условие вида:
если нет совпадений, тогда выполняем тело условия
Python
1
2
3
4
5
6
7
8
9
    for url in links:
        last_addr = url.split('/')[(len(url.split('/'))-1)]
        if match(site.split('/')[2], url.split('/')[2]):
            # print(match(site.split('/')[2], url.split('/')[2]))
            proverka = False
            if proverka==True:
                print(proverka)
                continue
        NESSESSARY_URL.append(url)
в links лист со ссылками текущей страницы (около 15 шт.)
логика такая: выдергиваем последнее слово в ссылке (например из "http://www.sitename.ru/catalog/ball" выдергиваем только ball) - это last_addr
теперь находим соответствие между текущей ссылкой и основным доменом, т.е. если в url сайт вида "http://www.sitefind.ru/article/internet", тогда пропускаем его и не добавляем в новый список
так вот условие if match(site.split('/')[2], url.split('/')[2]) срабатывает при условии, что они (домены) совпали. а как сделать условие, чтоб искал именно несовпадение?
опять же, print(match(site.split('/')[2], url.split('/')[2])) показывает, что возвращается не True или False, а целая конструкция, по которой нельзя сделать условие с True/False.
как видно в коде, у меня была попытка, но во внутреннее условие if proverka==True цикл никогда не заходит. не пойму, почему. помогите и с этим разобраться, кто понимает.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.01.2016, 16:09
Ответы с готовыми решениями:

Работа с регулярками
Здравствуйте. Суть вопроса: метод получает строку, и проверяет, состоит ли она только из маленьких латинских букв. если в строке, где либо...

Помогите с регулярками
Читаю конфиг-файл, каждая запись на новой строке: version=2.4.2 idxfilesize=12272791 date=2009.01.30 sametypesequence=x , строки...

Работа с регулярками
Всем доброго дня Правильно ли я пишу информацию в табличку? вопрос в строке в комментарии в коде using OfficeOpenXml; using...

5
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
18.01.2016, 16:52
Цитата Сообщение от gregster Посмотреть сообщение
внутреннее условие if proverka==True цикл никогда не заходит
Как же он зайдет?
Python
1
2
proverka = False
if proverka==True:
1. В начале цикла следует установить
Python
2
proverka = True
А проверять потом не из-под условия
Python
1
2
        proverka = False
    if proverka==True:
Хотя это всё на нужно
Цитата Сообщение от gregster Посмотреть сообщение
как сделать условие, чтоб искал именно несовпадение?
Python
3
if not match
0
51 / 51 / 18
Регистрация: 03.12.2015
Сообщений: 167
18.01.2016, 17:03
gregster,
омг, что это такое. Во-первых, вместо
Python
1
last_addr = url.split('/')[(len(url.split('/'))-1)]
можно использовать вариант получше
Python
1
last_addr = url.split('/')[-1]
Во-вторых, что такое match? Это Вы импортировали re и взяли ф-ию оттуда или это Ваша функция? В названии темы написано, что где-то тут регулярка. Где она? Если импортировали re через from re import *, то переделайте на import re.
В третьих, что такое site? Где эта переменная определена? Выложите чуть больше кода.
В-четверых, proverka == True - это ужас-ужас.
В-пятых, NESSESSARY_URL - это константа? Если да, то во избежание непоняток ее нельзя изменять.

Добавлено через 7 минут
я так понимаю, что в site у Вас тоже какой-то url записан и Вы передаете домен в функцию match в качестве шаблона, но в домене ведь используются точки, а в регулярках точка имеет особое значение. И почему нельзя просто использовать
Python
1
if site.split('/')[2] != url.split('/')[2]:
0
8 / 3 / 0
Регистрация: 04.09.2011
Сообщений: 108
18.01.2016, 17:58  [ТС]
Marinero, я добавлял not и почему-то условие также не выполнялось. потому и создал тему, ибо не понял, с чего вдруг не заработало
arctblake, мда, вот так вот я так и не научился работать со списками благодарю за исправление. так код более лаконичен
Цитата Сообщение от arctblake Посмотреть сообщение
Во-вторых, что такое match? Это Вы импортировали re и взяли ф-ию оттуда или это Ваша функция? В названии темы написано, что где-то тут регулярка. Где она? Если импортировали re через from re import *, то переделайте на import re.
В третьих, что такое site? Где эта переменная определена? Выложите чуть больше кода.
В-четверых, proverka == True - это ужас-ужас.
В-пятых, NESSESSARY_URL - это константа? Если да, то во избежание непоняток ее нельзя изменять
сорян, забыл сюда вставить import re. тупо из кода копировал, а импорты ж наверху остались. у меня уже нет возможности редактировать. перед match надо дописать re.
переменная site определена выше, она задает начало, с какой страницы начать парсить
я в курсе, что можно было написать if proverka: но т.к. условие не выполнялось, пришлось прописать в явную, ибо уже отчаялся
NESSESSARY_URL - не константа, а список. я хз, как там в правилах питона, может быть так константы обозначаются, раз Вы подумали, что это константа, но у меня это просто важная для меня переменная, чтоб в глаза бросалась в коде
может потому, что есть сайты вида "www.sitename.ru" и "wiki.sitename.ru". домен же один, по сути. мне не надо, чтоб он бегал на другие ресурсы, а парсил только один домен. надеюсь, что понятно объяснил

Добавлено через 16 минут
хотя, я думаю, что мне и
Python
1
if site.split('/')[2] != url.split('/')[2]:
должно хватить
0
51 / 51 / 18
Регистрация: 03.12.2015
Сообщений: 167
18.01.2016, 18:45
Лучший ответ Сообщение было отмечено gregster как решение

Решение

Python
1
if '.'.join(site.split('/')[2].split('.')[1:]) != '.'.join(url.split('/')[2].split('.')[1:]):
?
0
8 / 3 / 0
Регистрация: 04.09.2011
Сообщений: 108
18.01.2016, 19:00  [ТС]
да, черт побери, это лучший ответ
я с join'ами не знаком посему о знании такой штуки просто не в курсе. в принципе, это то, что надо было получить в сравнении с re.match
большое спасибо, Вам, arctblake
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.01.2016, 19:00
Помогаю со студенческими работами здесь

Задачка с регулярками и кавычками
Здравствуйте, Уже несколько часов решаю задачку подобного типа: Имеется Range, в тексте которого есть двойные и одинарные кавычки....

Размер шин регулярками
Мне нужно вычленять размер покрышки таким образом: Я пытаюсь что-то вроде list(re.findall('^|.*(\d)x\d{1}', "R16x5.4 NEW...

Отпарсить строку регулярками
Добрый день! Есть строка : Надо отпарсить строки с помощью регулярок. Вот мои шаблоны для парсинга: Regex rName = new...

Удалить текст регулярками
Здравствуйте, помогите, пожалуйста, удалить в таком фрагменте слово "собака" с помощью регулярок <tag>корова собака...

Не могу вытащить строку регулярками
import re test =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru