假设我有以下字符串:
http://www.domain.com/?s=some&two=20
Run Code Online (Sandbox Code Playgroud)
我怎样才能取消&包括以下内容&并拥有此字符串:
http://www.domain.com/?s=some
Run Code Online (Sandbox Code Playgroud)
Cla*_*diu 45
好吧,回答这个问题:
>>> s = "http://www.domain.com/?s=some&two=20"
Run Code Online (Sandbox Code Playgroud)
该rfind方法返回最右侧子字符串的索引:
>>> s.rfind("&")
29
Run Code Online (Sandbox Code Playgroud)
您可以使用切片运算符将所有元素提取到给定索引:
>>> "foobar"[:4]
'foob'
Run Code Online (Sandbox Code Playgroud)
把两者放在一起:
>>> s[:s.rfind("&")]
'http://www.domain.com/?s=some'
Run Code Online (Sandbox Code Playgroud)
如果您特别处理URL,则可能需要使用处理URL的内置库.例如,如果two要从上面的查询字符串中删除:
首先,解析URL作为一个整体:
>>> import urlparse, urllib
>>> parse_result = urlparse.urlsplit("http://www.domain.com/?s=some&two=20")
>>> parse_result
SplitResult(scheme='http', netloc='www.domain.com', path='/', query='s=some&two=20', fragment='')
Run Code Online (Sandbox Code Playgroud)
取出查询字符串:
>>> query_s = parse_result.query
>>> query_s
's=some&two=20'
Run Code Online (Sandbox Code Playgroud)
把它变成dict:
>>> query_d = urlparse.parse_qs(parse_result.query)
>>> query_d
{'s': ['some'], 'two': ['20']}
>>> query_d['s']
['some']
>>> query_d['two']
['20']
Run Code Online (Sandbox Code Playgroud)
'two'从字典中删除密钥:
>>> del query_d['two']
>>> query_d
{'s': ['some']}
Run Code Online (Sandbox Code Playgroud)
将其放回查询字符串中:
>>> new_query_s = urllib.urlencode(query_d, True)
>>> new_query_s
's=some'
Run Code Online (Sandbox Code Playgroud)
现在将URL重新拼接在一起:
>>> result = urlparse.urlunsplit((
parse_result.scheme, parse_result.netloc,
parse_result.path, new_query_s, parse_result.fragment))
>>> result
'http://www.domain.com/?s=some'
Run Code Online (Sandbox Code Playgroud)
这样做的好处是您可以更好地控制URL.就像,如果你总是想要删除two参数,即使它在查询字符串("two=20&s=some")中提前放置,这仍然会做正确的事情.根据你想做什么,它可能有点过分.
Cés*_*sar 33
你需要拆分字符串:
>>> s = 'http://www.domain.com/?s=some&two=20'
>>> s.split('&')
['http://www.domain.com/?s=some', 'two=20']
Run Code Online (Sandbox Code Playgroud)
这将返回一个列表,你可以看到,所以你可以这样做:
>>> s2 = s.split('&')[0]
>>> print s2
http://www.domain.com/?s=some
Run Code Online (Sandbox Code Playgroud)
string = 'http://www.domain.com/?s=some&two=20'
cut_string = string.split('&')
new_string = cut_string[0]
print(new_string)
Run Code Online (Sandbox Code Playgroud)