2015-12-21 73 views
1

我有這個字符串/1B5DB40?full,我想將它轉換爲1B5DB40python 3刪除字符串前後

我需要刪除?full和前/

我的網站不總是有?full在最後,所以我需要的東西,仍然會甚至工作,如果?full是不存在的。

感謝,並希望這不是太混亂得到一些幫助:)

編輯:
我知道我可以在0和8或任何切片,但1B5DB40可長可短。例如,它可能是/1B5DB4000?full/1B5

+0

http://stackoverflow.com/questions/509211/explain-pythons-slice-notation – pvg

+0

@pvg我更新了我的問題。字符串將是不同的大小,這是我無法弄清楚。如果我在0和8切片,那麼它不會工作 –

+0

你可以在「/」和「?」切片嗎? ? –

回答

1

使用str.lstrip(除去領先/)和str.split(以?後刪除optinal部分):

>>> '/1B5DB40?full'.lstrip('/').split('?')[0] 
'1B5DB40' 

>>> '/1B5DB40'.lstrip('/').split('?')[0] 
'1B5DB40' 

或使用urllib.parse.urlparse

>>> import urllib.parse 
>>> urllib.parse.urlparse('/1B5DB40?full').path.lstrip('/') 
'1B5DB40' 
>>> urllib.parse.urlparse('/1B5DB40').path.lstrip('/') 
'1B5DB40' 
1

你可以使用lstriprstrip

>>> data.lstrip('/').rstrip('?full') 
'1B5DB40' 

這隻只要你沒有的人物作品ful?/在要提取的部分。

+0

如果'data'是''/ 1Buuuu?full''怎麼辦? – falsetru

+0

@falsetru:你說得對,我對此一無所知! –

0

您可以使用正則表達式:

>>> import re 

>>> extract = re.compile('/?(.*?)\?full') 
>>> print extract.search('/1B5DB40?full').group(1) 
1B5DB40 
>>> print extract.search('/1Buuuuu?full').group(1) 
1Buuuuu 
0

什麼正則表達式?

import re 
re.search(r'/(?P<your_site>[^\?]+)', '/1B5DB40?full').group('your_site') 

在這種情況下,它匹配的一切,這是'/''?'之間,但可以將其更改爲您的具體要求

0
>>> '/1B5DB40?full'split('/')[1].split('?')[0] 
'1B5DB40' 
>>> '/1B5'split('/')[1].split('?')[0] 
'1B5' 
>>> '/1B5DB40000?full'split('/')[1].split('?')[0] 
'1B5DB40000' 

Split只會返回一個包含原始的字符串,如果一個單一的元素列表分隔符未找到。

相關問題