我對Python完全陌生,不知道如何獲得匹配字符串中某些通配符條件的子字符串。 我想從以下字符串獲得時間戳:Python中Wilcard匹配子字符串
sdc4-251504-7f5-f59c349f0e516894fc89d2686a0d57f5-1360922654.97671.data
我想只有「1360922654.97671」部分出來的字符串。 請幫忙。
我對Python完全陌生,不知道如何獲得匹配字符串中某些通配符條件的子字符串。 我想從以下字符串獲得時間戳:Python中Wilcard匹配子字符串
sdc4-251504-7f5-f59c349f0e516894fc89d2686a0d57f5-1360922654.97671.data
我想只有「1360922654.97671」部分出來的字符串。 請幫忙。
如果點劃你的字符串中有其特定的功能,您可以使用此:
>>> 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
哇,這很快,很好的答案。它解決了我的問題。謝謝! Python非常強大。 – openstk 2013-02-15 13:31:01
>>> s = "sdc4-251504-7f5-f59c349f0e516894fc89d2686a0d57f5-1360922654.97671.data"
>>> s.split('-')[-1][:-5]
'1360922654.97671'
字符略少,只適用於字符串的最後部分爲.data
或其他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']
嘿,我正在爲're'模塊+1爭先搶先! – danodonovan 2013-02-15 13:30:45
謝謝,這是更通用的解決方案。 – openstk 2013-02-15 13:36:34
有這些字符串遵循設定的格式? – Hoopdady 2013-02-15 13:23:07
是的,字符串遵循某事某事某事某事REQDATA.something – openstk 2013-02-15 13:35:04