Python - 提取重要字符串信息

1 投票
4 回答
1330 浏览
提问于 2025-04-16 13:06

我有以下这个字符串:

http://example.com/variable/controller/id32434242423423234?param1=321&param2=4324342

我想知道最好的方法来提取出这个字符串中的id值,在这个例子中就是 - 32434242423423234。

祝好,
Mladjo

4 个回答

2

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们写的代码有bug,或者是因为我们没有正确理解某些概念。

当你在编写代码时,确保你理解每一行代码的作用。如果你不明白某个部分,最好去查阅资料或者请教别人。这样可以帮助你更快地找到问题所在。

另外,调试也是一个很重要的技能。调试就是找出代码中的错误并修复它们。你可以通过逐行检查代码,或者使用一些工具来帮助你找到问题。

总之,编程是一个不断学习和实践的过程。遇到问题时,不要气馁,慢慢来,总会找到解决办法的。

>>> s
'http://example.com/variable/controller/id32434242423423234?param1=321&param2=4324342'
>>> s.split("id")
['http://example.com/variable/controller/', '32434242423423234?param1=321&param2=4324342']
>>> s.split("id")[-1].split("?")[0]
'32434242423423234'
>>>
3
>>> import urlparse
>>> res=urlparse.urlparse("http://example.com/variable/controller/id32434242423423234?param1=321&param2=4324342")
>>> res.path
'/variable/controller/id32434242423423234'
>>> import posixpath
>>> posixpath.split(res.path)
('/variable/controller', 'id32434242423423234')
>>> directory,filename=posixpath.split(res.path)
>>> filename[2:]
'32434242423423234'

在这个情况下,使用 urlparseposixpath 可能有点复杂,但我觉得这样做是比较干净利落的方法。

8

你可以直接使用一个正则表达式,比如:

import re

s = "http://example.com/variable/controller/id32434242423423234?param1=321&param2=4324342"

m = re.search(r'controller/id(\d+)\?',s)
if m:    
    print "Found the id:", m.group(1)

如果你需要把这个值当作数字而不是字符串来使用,可以用 int(m.group(1))。还有很多其他的方法可以做到这一点,具体用哪种方法更合适,得看你代码的整体目标是什么,但没有更多的背景信息,很难给出确切的建议。

撰写回答