带有RegEx和OR语句的Python str.extract

时间:2019-04-29 12:45:37

标签: python

如何使用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&param=value456&foo=bar'
params = dict(pair.split('=') for pair in string.split('&'))
params['param']

但是,这真的不适合没有一个定界符的其他用例。因此核心问题仍然对我开放。

0 个答案:

没有答案