我目前有一个包含变量的字符串。
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])
答案 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
变量正是您要找的。 p>
这将给出一个干净的结果,只有:
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)
不管在给定的内容之后是什么。