如何删除变量之间的文本

时间:2016-06-07 22:24:18

标签: python

我目前有一个包含变量的字符串。

domain.com/?hello=randomtext&thingy=randotext2&stuff=1231kjh

我正在尝试删除

&thingy=(all text that is in here)

订单可能并非总是如此,=之后的文字会发生变化。

我开始做这样的事情,但我觉得必须有更快的选择:

cleanlist = []
variables = url.split('&')
for t in variables:
    if not t.split('=', 1)[0] == 'thingy':
        cleanlist.append(t.split('=', 1)[0])

4 个答案:

答案 0 :(得分:3)

我不了解Python,但根据其他编程语言的经验,我认为你应该问的问题是"你如何解析Python中的URL?"或"如何在Python中解析url查询字符串?"

通过谷歌搜索我得到了以下可能有帮助的信息:

from urlparse import urlparse
o = urlparse('domain.com/?hello=randomtext&thingy=randotext2&stuff=1231kjh')
q = urlparse.parse_qs(o.query, true)
>>> q.hello

randomtext

>>> q.thingy

randomtext2

解析URL和查询字符串后,只需抓住您想要的内容即可。

答案 1 :(得分:0)

您可以使用正则表达式替换。

import re
p = re.compile(ur'(&thingy=.*)&')
test_str = u"domain.com/?hello=randomtext&thingy=randotext2&stuff=1231kjh"
subst = u"&"

result = re.sub(p, subst, test_str)

>>> result
u'domain.com/?hello=randomtext&stuff=1231kjh'

答案 2 :(得分:-1)

如果我的问题正确,那么您正在尝试删除所有字符串"&thingy=randotext2&stuff=1231kjh "

这可以通过这样的方式轻松实现:

current_str = "domain.com/?hello=randomtext&thingy=randotext2&stuff=1231kjh" 
cursor = current_str.find("&thingy=")
clean_str = current_str[:cursor]

现在clean_str变量正是您要找的。

这将给出一个干净的结果,只有:

domain.com/?hello=randomtext

答案 3 :(得分:-1)

如果您希望在正则表达式中仅删除查询字符串参数值,例如&thingy=,则它是这样的:

import re
domain = "domain.com/?hello=randomtext&thingy=randotext2&stuff=1231kjh"
x = re.sub(r'(&thingy=)[^&]*(&?.*)$', r'\1\2', domain)

不管在给定的内容之后是什么。