假设我有以下字符串:Python - 如何在Python中剪切字符串?
http://www.domain.com/?s=some&two=20
我怎样才能起飞是什么&
包括&
,并有此字符串后:
http://www.domain.com/?s=some
假设我有以下字符串:Python - 如何在Python中剪切字符串?
http://www.domain.com/?s=some&two=20
我怎样才能起飞是什么&
包括&
,并有此字符串后:
http://www.domain.com/?s=some
你需要分割字符串:
>>> s = 'http://www.domain.com/?s=some&two=20'
>>> s.split('&')
['http://www.domain.com/?s=some', 'two=20']
这将返回一个列表,你可以看到,所以你可以这样做:
>>> s2 = s.split('&')[0]
>>> print s2
http://www.domain.com/?s=some
string = 'http://www.domain.com/?s=some&two=20'
cut_string = string.split('&')
new_string = cut_string[0]
print(new_string)
您可以使用find()
>>> s = 'http://www.domain.com/?s=some&two=20'
>>> s[:s.find('&')]
'http://www.domain.com/?s=some'
O ˚F当然,如果是搜索到的文字将不会存在,那么您需要编写更冗长的代码的机会:
pos = s.find('&')
if pos != -1:
s = s[:pos]
虽然你可以使用如下代码取得一些进展,更复杂的情况需要一个真正的URL解析器。
>>str = "http://www.domain.com/?s=some&two=20"
>>str.split("&")
>>["http://www.domain.com/?s=some", "two=20"]
好,回答直接的问题:
>>> s = "http://www.domain.com/?s=some&two=20"
该rfind
方法返回最右边的子字符串的索引:
>>> s.rfind("&")
29
你可以把所有的元素直到达到给定的索引与切片运算符:
>>> "foobar"[:4]
'foob'
把两者结合起来:
>>> s[:s.rfind("&")]
'http://www.domain.com/?s=some'
如果您特别处理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='')
取出刚刚查询字符串:
>>> query_s = parse_result.query
>>> query_s
's=some&two=20'
把它变成一个dict
:
>>> query_d = urlparse.parse_qs(parse_result.query)
>>> query_d
{'s': ['some'], 'two': ['20']}
>>> query_d['s']
['some']
>>> query_d['two']
['20']
取出从字典键:
>>> del query_d['two']
>>> query_d
{'s': ['some']}
把它放回一个查询字符串:
>>> new_query_s = urllib.urlencode(query_d, True)
>>> new_query_s
's=some'
现在缝合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'
这样做的好处是,你对URL有更多的控制权。就像,如果你总是想删除two
参数,即使它早先放在查询字符串("two=20&s=some"
)中,这仍然会做正确的事情。取决于你想要做什么,这可能是矫枉过正的。
+1最好的答案。 –
很好的答案与额外的信息。 +1 –
s[0:"s".index("&")]
这是什么呢:
如果URL中有任何其他&符号,这将不起作用。 – Claudiu
我像大家一样回答了这个问题,他没有要求例外。所以要做他给的例子,这是做这件事最简单的pythonic方法。 –
啊,这是真的。我以为他问了如何去掉字符串中最右边的&符号(所以我想如果你给了'string.rsplit('&',1)''会更好,但他并没有这么要求。 – Claudiu