Ok как я использовать регулярное выражение для удаления HTTP И/ИЛИ WWW просто получить http://www.domain.com/ в domain.comURL Strip - Python
Пусть х, как любой вид ДВУ или CTLD
Входной пример:
www.domain.x
Выход:
domain.x
Ok как я использовать регулярное выражение для удаления HTTP И/ИЛИ WWW просто получить http://www.domain.com/ в domain.comURL Strip - Python
Пусть х, как любой вид ДВУ или CTLD
Входной пример:
www.domain.x
Выход:
domain.x
Если вы действительно хотите использовать регулярные выражения вместо urlparse()
или разделив строку:
>>> domain = 'http://www.example.com/'
>>> re.match(r'(?:\w*://)?(?:.*\.)?([a-zA-Z-1-9]*\.[a-zA-Z]{1,}).*', domain).groups()[0]
example.com
Регулярное выражение может немного упрощенно, но работает. Он также не заменяет, но я думаю, что получить доступ к домену проще.
Для поддержки доменов, как 'co.uk', можно сделать следующее:
>>> p = re.compile(r'(?:\w*://)?(?:.*?\.)?(?:([a-zA-Z-1-9]*)\.)?([a-zA-Z-1-9]*\.[a-zA-Z]{1,}).*')
>>> p.match(domain).groups()
('Google', 'CO.UK')
Таким образом, вы должны проверить результат для домены вроде «co.uk», и снова присоединить результат в таком случае. Нормальные домены должны работать нормально. Я не мог заставить его работать, когда у вас несколько поддоменов.
Однострочник без регулярных выражений или фантазии модулей:
>>> domain = 'http://www.example.com/'
>>> '.'.join(domain.replace('http://','').split('/')[0].split('.')[-2:])
Мне удалось вставить неправильное регулярное выражение в мой первоначальный пост, но теперь он отредактирован с правильным. – geertjanvdk
принимает ли он с http: // тоже? – Natsume
@Natsume: Ну, да, как показывает пример. – geertjanvdk
Не следует использовать регулярное выражение, используйте urlparse, чтобы получить netloc
>>> x = 'http://www.domain.com/'
>>> from urlparse import urlparse
>>> o = urlparse(x)
>>> o
ParseResult(scheme='http', netloc='www.domain.com', path='/', params='', query='', fragment='')
>>>
, а затем
>>> o.netloc
'www.domain.com'
>>> if o.netloc.startswith('www.'): print o.netloc[4:]
...
domain.com
>>>
'o.netloc.startswith ('www.') 'будет более уместным, чем' 'www 'в o.netloc' –
@ Джанна Карила: Спасибо, Янне. Потерял это полностью в быстром ответе. То есть, конечно, правильный путь, а не тот, который я представил. Это неверно. – pyfunc
python 3.5: from urllib.parse import urlparse – firephil
Вот один из способов сделать это:
>>>import re
>>>str1 = 'http://www.domain.x/'
>>>p1 = re.compile('http://www.|/')
>>>out = p1.sub('',str1)
Приятный, но он не охватывает, где «www» будет отсутствовать URL-адрес. – geertjanvdk
можно использовать match from re как показано ниже, чтобы проверить, существует ли требуемая подстрока 'www': >>> print p1.match ("www") – user1242393
** str.lstrip ([символов]) ** Возвращает копию строки с ведущими персонажами удалены. Аргумент chars - это строка, определяющая набор символов, которые нужно удалить. Если опущен или None, аргумент chars по умолчанию удаляет пробелы. Аргумент chars не является префиксом; скорее всего, все комбинации его значений лишены: '' >>> 'просторный' .lstrip() '' '' просторный ''' '' >>>' www.example.com'.lstrip ('cmowz.') '' '' 'example.com' '' – doniyor
Стоит отметить, что существуют также www-pub, www-groups, www2, www3 и другие www-префиксы – Romeno