假設我有以下字符串: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