Python正则表达式解析黑莓浏览器用户代理
我需要解析黑莓浏览器的用户代理,以便用Python 2.5获取设备和版本信息。例如:
BlackBerry9630/4.7.1.65 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/-1,gzip(gfe),gzip(gfe)
在上面的用户代理中,我想提取以下几个部分:
Browser: Blackberry Device: 9630 Major Version: 4 Minor Version: 7
其余的信息我不太关心。
这里还有一个例子:
BlackBerry9530/5.0.0.328 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105,gzip(gfe),gzip(gfe),gzip(gfe)
Browser: Blackberry Device: 9530 Major Version: 5 Minor Version: 0
我对正则表达式实在不太在行,任何帮助都非常感谢。
3 个回答
在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这种情况下,我们需要找到问题的根源。通常,我们可以通过查看错误信息来帮助我们理解发生了什么。
错误信息就像是程序给我们的提示,告诉我们哪里出了问题。比如,它可能会告诉我们某个变量没有定义,或者某个函数没有正确调用。理解这些信息是解决问题的第一步。
此外,很多时候我们可以在网上找到类似的问题和解决方案。像StackOverflow这样的网站上,有很多程序员分享他们的经验和解决方法。通过搜索相关的错误信息,我们可以找到别人是如何解决类似问题的,这样可以节省很多时间。
最后,调试代码也是一个重要的技巧。调试就是逐步检查代码的运行情况,看看每一步的结果是否符合预期。这样可以帮助我们找到问题所在,并进行修复。
总之,遇到问题时,不要慌张,仔细查看错误信息,利用网络资源,学会调试,这样就能更快地解决问题。
>>> import re
>>> s = 'BlackBerry9530/5.0.0.328 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105,gzip(gfe),gzip(gfe),gzip(gfe)'
>>> print(re.compile(r'(Blackberry)(\d+)/(\d+)\.(\d+)\.',re.I).search(s).groups())
('BlackBerry', '9530', '5', '0')
>>>
在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们没有正确理解某些概念或者使用了不合适的代码。
当我们在网上寻找解决方案时,像StackOverflow这样的网站可以提供很多帮助。这里有很多经验丰富的程序员,他们会分享自己的经验和解决方案,帮助我们解决问题。
在提问时,清楚地描述你的问题是非常重要的。你需要告诉别人你遇到了什么样的错误,代码是怎样的,以及你希望达到什么样的结果。这样,别人才能更好地理解你的问题,并提供有效的建议。
同时,查看别人遇到的类似问题和解决方案也很有帮助。很多时候,别人已经遇到过你现在面临的挑战,他们的经验可以为你提供启发。
总之,善用这些资源,保持耐心和好奇心,你会在编程的道路上越走越顺。
browser, version = useragent.split()[0].split("/")
browsername = re.findall(r"[a-zA-Z]+", browser)
device = re.findall(r"[0-9]+", browser)
versions = re.findall(r"[0-9]+", version)
major = versions[0]
minor = versions[1]
像这样的代码可以适用于你的情况,但不一定适合所有情况:
'^(\D*)(\d*)/(\d*)\.(\d*)\.'
\D
的意思是“任何不是数字的字符”,而\d
的意思是“任何数字字符”。