私はPythonをまったく使用したことがなく、文字列からワイルドカード条件に一致するサブ文字列を取得する方法がわかりません。次の文字列からタイムスタンプを取得しようとしています。
sdc4-251504-7f5-f59c349f0e516894fc89d2686a0d57f5-1360922654.97671.data
文字列から「 1360922654.97671」の部分だけを取り出したい。助けてください。
私はPythonをまったく使用したことがなく、文字列からワイルドカード条件に一致するサブ文字列を取得する方法がわかりません。次の文字列からタイムスタンプを取得しようとしています。
sdc4-251504-7f5-f59c349f0e516894fc89d2686a0d57f5-1360922654.97671.data
文字列から「 1360922654.97671」の部分だけを取り出したい。助けてください。
使用できるワイルドカードについて言及したため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']
ドットとダッシュが文字列内で特定の機能を持っている場合は、次のように使用できます。
>>> 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
>>> s = "sdc4-251504-7f5-f59c349f0e516894fc89d2686a0d57f5-1360922654.97671.data"
>>> s.split('-')[-1][:-5]
'1360922654.97671'
わずかに少ない文字数で、文字列の最後の部分.data
または別の 5 文字の文字列でのみ機能します。