2013-07-06 3 views
0

Так что я пытаюсь изменить строку 31/12/9999 к 9999/12/31, я пытался date = date[::-1], но он производит 9999/21/31 и не сохраняет содержимое поля строка.Обратить порядок строки, сохраняя при этом исходное содержимое строки

Я как бы искал нечто похожее на php, reverse_array($array , $preserve);.

ответ

4

Split его в список с str.split(), а затем распечатать обращенную строку с str.join():

>>> s = "31/12/9999" 
>>> L = s.split('/') # L now contains ['31', '12', '9999'] 
>>> print '/'.join(L[::-1]) # Reverse the list, then print all the content in the list joined by a/
9999/12/31 

Или в одной строке:

>>> print '/'.join(s.split('/')[::-1]) 

Однако, если вы работаете с датами, вы должны использовать модуль datetime, чтобы позже вы могли делать другие вещи с датами:

>>> import datetime 
>>> s = "31/12/9999" 
>>> date = datetime.datetime.strptime(s, '%d/%m/%Y') 
>>> print date.strftime('%Y/%m/%d') 
9999/12/31 

Временных сравнения:

$ python -m timeit 's = "31/12/9999"' "'/'.join(s.split('/')[::-1])" 
1000000 loops, best of 3: 0.799 usec per loop 
$ python -m timeit 's = "31/12/9999"' "'/'.join(reversed(s.split('/')))" 
1000000 loops, best of 3: 1.53 usec per loop 
+0

идеального спасибо :) – Killrawr

+0

@Killrawr Вы приветственный :) – TerryA

5

Это, как сделать это с Python

'/'.join(reversed(s.split('/'))) 
9999/12/31 
Смежные вопросы