0

私は例えば以下のような文字列を持っていました

i = 'backup_1.2012-12-19.tar.gz'

逆から文字列からのみをフェッチする必要があり2012-12-19.tar.gzます(文字列が次のように変わることがあるため'backup_2.2012-12-20.tar.gz','backup_3.2012-12-21.tar.gz'

したがって、文字列が何であれ2012 to .gz、Pythonで文字列を逆からスライスする必要があります

誰かがこのPythonのやり方を教えてもらえますか

4

5 に答える 5

4

あなたは最初の後にすべてを取ることができません.か?

>>> s.split('.', 1)[1]
'2012-12-19.tar.gz'
于 2012-12-21T07:34:47.943 に答える
4

チェックアウトstr.partition

In [160]: i = 'backup_1.2012-12-19.tar.gz'

In [161]: i.partition('.')
Out[161]: ('backup_1', '.', '2012-12-19.tar.gz')

In [162]: i.partition('.')[-1]
Out[162]: '2012-12-19.tar.gz'

編集:日付を「逆にする」場合:

In [163]: i.partition('.')[-1].partition('.')[0]
Out[163]: '2012-12-19'

In [164]: i.partition('.')[-1].partition('.')[0].split('-')[::-1]
Out[164]: ['19', '12', '2012']

In [165]: '-'.join(i.partition('.')[-1].partition('.')[0].split('-')[::-1])
Out[165]: '19-12-2012'
于 2012-12-21T07:34:54.300 に答える
4

負のインデックスを持つスライスを使用できます。

s[-17:]
于 2012-12-21T07:35:51.680 に答える
1
 ".".join(i.split(".")[1:]) 

これも機能します。しかし、ジョンの答えは、2 つの操作しか行わないため、より適切です。

または次の方法で実行します。これにより、文字列に「.」がさらに含まれている場合でも、常に最後の文字列が返されます。最初に。

".".join(i.split(".")[-3:])
于 2012-12-21T09:49:55.213 に答える