2013-02-15 60 views
0

我對Python完全陌生,不知道如何獲得匹配字符串中某些通配符條件的子字符串。 我想從以下字符串獲得時間戳:Python中Wilcard匹配子字符串

sdc4-251504-7f5-f59c349f0e516894fc89d2686a0d57f5-1360922654.97671.data 

我想只有「1360922654.97671」部分出來的字符串。 請幫忙。

+1

有這些字符串遵循設定的格式? – Hoopdady 2013-02-15 13:23:07

+0

是的,字符串遵循某事某事某事某事REQDATA.something – openstk 2013-02-15 13:35:04

回答

5

如果點劃你的字符串中有其特定的功能,您可以使用此:

>>> s = "sdc4-251504-7f5-f59c349f0e516894fc89d2686a0d57f5-1360922654.97671.data" 
>>> s.rsplit('.', 1)[0].split('-')[-1] 
'1360922654.97671' 

一步一步:

>>> s.rsplit('.', 1) 
['sdc4-251504-7f5-f59c349f0e516894fc89d2686a0d57f5-1360922654.97671', 'data'] 

>>> s.rsplit('.', 1)[0] 
'sdc4-251504-7f5-f59c349f0e516894fc89d2686a0d57f5-1360922654.97671' 

>>> s.rsplit('.', 1)[0].split('-') 
['sdc4', '251504', '7f5', 'f59c349f0e516894fc89d2686a0d57f5', '1360922654.97671'] 

>>> s.rsplit('.', 1)[0].split('-')[-1] 
'1360922654.97671' 

這將在形式的任何字符串的工作:

anything-WHATYOUWANT.stringwithoutdots 
+0

哇,這很快,很好的答案。它解決了我的問題。謝謝! Python非常強大。 – openstk 2013-02-15 13:31:01

2
>>> s = "sdc4-251504-7f5-f59c349f0e516894fc89d2686a0d57f5-1360922654.97671.data" 
>>> s.split('-')[-1][:-5] 
'1360922654.97671' 

字符略少,只適用於字符串的最後部分爲.data或其他5個字符的字符串。

5

因爲你提到的通配符你可以使用re

In [77]: import re 
In [78]: s = "sdc4-251504-7f5-f59c349f0e516894fc89d2686a0d57f5-1360922654.97671.data" 
In [79]: re.findall("\d+\.\d+", s) 
Out[79]: ['1360922654.97671'] 
+0

嘿,我正在爲're'模塊+1爭先搶先! – danodonovan 2013-02-15 13:30:45

+0

謝謝,這是更通用的解決方案。 – openstk 2013-02-15 13:36:34