0

私はPythonをまったく使用したことがなく、文字列からワイルドカード条件に一致するサブ文字列を取得する方法がわかりません。次の文字列からタイムスタンプを取得しようとしています。

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

文字列から「 1360922654.97671」の部分だけを取り出したい。助けてください。

4

3 に答える 3

6

使用できるワイルドカードについて言及したため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']
于 2013-02-15T13:26:25.740 に答える
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
于 2013-02-15T13:18:50.360 に答える
2
>>> s = "sdc4-251504-7f5-f59c349f0e516894fc89d2686a0d57f5-1360922654.97671.data"
>>> s.split('-')[-1][:-5]
'1360922654.97671'

わずかに少ない文字数で、文字列の最後の部分.dataまたは別の 5 文字の文字列でのみ機能します。

于 2013-02-15T13:21:05.637 に答える