如何使用str.extract和or-statement提取字符串的一部分?
假设我有两个带有URL片段和参数的字符串:
string1 = 'param=value123'
string2 = 'param=value456&foo=bar'
现在,我将仅提取“ param”的值。
使用string1.str.extract('param=(.+?)$')
,我得到了string1的值以及从param到字符串结尾的所有内容。
使用string2.str.extract('param=(.+?)&')
,我获得了string2的值以及从param到url中下一个参数的所有内容。
但是我如何只用一个正则表达式处理这两种情况?
string.str.extract('param=(.+?)(&|$)')
无法正常工作,因为我收到错误消息:“传递的项目数错误2,展示位置意味着1”
编辑:仅提取一部分网址。我的问题更笼统,不仅限于URL,因此使用 urllib.parse 不会有帮助。我想提取X和Y之间的任何字符串的一部分或字符串的结尾。
Edit2 :为了更加清楚,我删除了字符串的主机。因此,在我的情况下,我仍然想提取“ param”的值,但是 urllib.parse 在这里不起作用,因为它只能与host和//一起使用。
Edit3: 对于没有URL这样的主机名的URL参数,它可以在我的特殊情况下工作:
string = 'bar=foo¶m=value456&foo=bar'
params = dict(pair.split('=') for pair in string.split('&'))
params['param']
但是,这真的不适合没有一个定界符的其他用例。因此核心问题仍然对我开放。