我有這個字符串/1B5DB40?full
,我想將它轉換爲1B5DB40
。python 3刪除字符串前後
我需要刪除?full
和前/
我的網站不總是有?full
在最後,所以我需要的東西,仍然會甚至工作,如果?full
是不存在的。
感謝,並希望這不是太混亂得到一些幫助:)
編輯:
我知道我可以在0和8或任何切片,但1B5DB40
可長可短。例如,它可能是/1B5DB4000?full
或/1B5
我有這個字符串/1B5DB40?full
,我想將它轉換爲1B5DB40
。python 3刪除字符串前後
我需要刪除?full
和前/
我的網站不總是有?full
在最後,所以我需要的東西,仍然會甚至工作,如果?full
是不存在的。
感謝,並希望這不是太混亂得到一些幫助:)
編輯:
我知道我可以在0和8或任何切片,但1B5DB40
可長可短。例如,它可能是/1B5DB4000?full
或/1B5
使用str.lstrip
(除去領先/
)和str.split
(以?
後刪除optinal部分):
>>> '/1B5DB40?full'.lstrip('/').split('?')[0]
'1B5DB40'
>>> '/1B5DB40'.lstrip('/').split('?')[0]
'1B5DB40'
>>> import urllib.parse
>>> urllib.parse.urlparse('/1B5DB40?full').path.lstrip('/')
'1B5DB40'
>>> urllib.parse.urlparse('/1B5DB40').path.lstrip('/')
'1B5DB40'
你可以使用lstrip
和rstrip
:
>>> data.lstrip('/').rstrip('?full')
'1B5DB40'
這隻只要你沒有的人物作品f
,u
,l
,?
,/
在要提取的部分。
如果'data'是''/ 1Buuuu?full''怎麼辦? – falsetru
@falsetru:你說得對,我對此一無所知! –
您可以使用正則表達式:
>>> import re
>>> extract = re.compile('/?(.*?)\?full')
>>> print extract.search('/1B5DB40?full').group(1)
1B5DB40
>>> print extract.search('/1Buuuuu?full').group(1)
1Buuuuu
什麼正則表達式?
import re
re.search(r'/(?P<your_site>[^\?]+)', '/1B5DB40?full').group('your_site')
在這種情況下,它匹配的一切,這是'/'
和'?'
之間,但可以將其更改爲您的具體要求
>>> '/1B5DB40?full'split('/')[1].split('?')[0]
'1B5DB40'
>>> '/1B5'split('/')[1].split('?')[0]
'1B5'
>>> '/1B5DB40000?full'split('/')[1].split('?')[0]
'1B5DB40000'
Split只會返回一個包含原始的字符串,如果一個單一的元素列表分隔符未找到。
http://stackoverflow.com/questions/509211/explain-pythons-slice-notation – pvg
@pvg我更新了我的問題。字符串將是不同的大小,這是我無法弄清楚。如果我在0和8切片,那麼它不會工作 –
你可以在「/」和「?」切片嗎? ? –