Python中的通配符匹配子字符串

时间:2013-02-15 13:17:28

标签: python

我是Python新手,不知道如何从字符串中获取匹配某些通配符条件的子字符串。 我想从以下字符串中获取时间戳:

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

我想只从字符串中获取“ 1360922654.97671 ”部分。 请帮忙。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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']

答案 2 :(得分:2)

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

字符数略少,仅适用于字符串的最后一部分为.data或另外5个字符的字符串。