我有一个名为link的字符串变量,它从远程站点返回数据。 如何在等号(token =)后解析数据? 例如,我想抓住" 234132421reafdfasdfsdfdsf3234423edfasfdsf"从 以下一行。
file: "http://www.aaastreams.com/playlist.m3u8?token=234132421reafdfasdfsdfdsf3234423edfasfdsf"
});
python代码:
req = urllib2.Request('http://www.somesite.com/test.php')
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0')
response = urllib2.urlopen(req)
link = response.read()
来自"打印链接的示例响应值;":
.......rest of response
<script>
jwplayer("container").setup({
width:700,
height:220,
primary: "hls",
title:"streams",
autostart:true,
image: "./1.jpg",
file: "http://www.aaastreams.com/playlist.m3u8?token=234132421reafdfasdfsdfdsf3234423edfasfdsf"
});
jwplayer().onError(function(){
jwplayer().load({file:"http://www.aaa.com/jwplayer/ads.mp4",image:"http://aaa.com/2.png"});
jwplayer().play();
});
</script>
.......rest of response
答案 0 :(得分:2)
解析URL的更好方法是使用urlparse模块。
以下是一个例子:
from urlparse import urlparse, parse_qs
url = "http://www.aaastreams.com/playlist.m3u8?token=234132421reafdfasdfsdfdsf3234423edfasfdsf"
query = urlparse(url).query
params = parse_qs(query)
params
将包含您的令牌以及网址中的任何其他查询参数的字典。
答案 1 :(得分:1)
不是进一步解析url而是假设整个字符串中只有一个等号,我建议做一些像这样的字符串操作:
In [1]: s = "http://www.aaastreams.com/playlist.m3u8?token=234132421reafdfasdfsdfdsf3234423edfasfdsf"
In [2]: s.split('=')[1]
Out[3]: '234132421reafdfasdfsdfdsf3234423edfasfdsf'
答案 2 :(得分:0)
您可以将正则表达式与捕获组一起使用。
可以找到对此的完整说明here向下滚动到标有“群组”的部分
“组由'(',')'元字符标记。'('和')'具有与数学表达式中相同的含义;它们将包含在其中的表达式组合在一起,您可以重复具有重复限定符的组的内容,例如,+,?或{m,n}。例如,(ab)将匹配零个或多个重复的ab。
>>> p = re.compile('(a(b)c)d')
>>> m = p.match('abcd')
>>> m.group(0)
'abcd'
>>> m.group(1)
'abc'
>>> m.group(2)
'b'
因此,在这种情况下,您可以使用正则表达式,如:
'^ *[a-z][A-Z] *\=(.*)$
组0是整个匹配组1,并且向前匹配可以出现在多个括号(组匹配)对中的表达式的那部分。这些组可以嵌套。
请注意,这是一种通用方法,并非特定于网址
答案 3 :(得分:0)
考虑内置的字符串方法:
str.partition(sep)
在第一次出现sep时拆分字符串,并返回包含分隔符之前的部分的3元组,分隔符本身以及分隔符之后的部分。如果找不到分隔符,则返回一个包含字符串本身的3元组,后跟两个空字符串。
在你的情况下,你可以使用&#34; =&#34;作为分隔符(sep)。 str是&#34; =&#34;的长字符串。在它。
答案 4 :(得分:0)
在尝试不同的解决方案后,我提出了解决此问题的最简单方法:
tokenValue = re.search('token=(.*)"', link)
print tokenValue.group(1);