我有string
,我想从该主substring
string
一些示例字符串是:
http://domain.com/xxxxx/xxxxxxxx?tags=%7C105651%7C102496&Asidebar=1&dnr=y
http://domain.com/xxxxx/xxxxxx?tags=%7C12784%7C102496&index=28&showFromBeginning=true&
我想获得tags value
。
在这种情况下:
val = %7C105651%7C102496
val = %7C12784%7C102496
有没有机会得到它?
修改
tags = re.search('tags=(.+?)&Asidebar', url)
print tags
if tags:
found = tags.group(1)
print (found)
output: None
注意:我只是尝试从第一个字符串中获取内容
答案 0 :(得分:3)
使用urlparse.urlparse
和cgi.parse_qs
(Python 2.x):
>>> import urlparse
>>> import cgi
>>>
>>> s = 'http://domain.com/xxxxx/xxxxxxxx?tags=%7C105651%7C102496&Asidebar=1&dnr=y'
>>> cgi.parse_qs(urlparse.urlparse(s).query)
{'dnr': ['y'], 'Asidebar': ['1'], 'tags': ['|105651|102496']}
>>> cgi.parse_qs(urlparse.urlparse(s).query)['tags'][0]
'|105651|102496'
在Python 3.x中,使用urllib.parse.urlparse
和urllib.parse.parse_qs
:
>>> import urllib.parse
>>>
>>> s = 'http://domain.com/xxxxx/xxxxxxxx?tags=%7C105651%7C102496&Asidebar=1&dnr=y'
>>> urllib.parse.parse_qs(urllib.parse.urlparse(s).query)['tags'][0]
'|105651|102496'
答案 1 :(得分:3)
你快到了。您不需要在正则表达式中编写Asidebar
。因为在第二个输入字符串中,没有名为Asidebar
的子字符串。
tags = re.search('tags=(.+?)&', url)
if tags:
found = tags.group(1)
print (found)