Ich habe einige Daten, deren Format d/m/yyyy ist (z. B. 28.02.1987). Ich hätte es gerne im ISO-Format: 1987-02-28

Ich denke, wir können es so machen, aber es scheint ein bisschen schwer zu sein:

str_date = '2/28/1987'
arr_str = re.split('/', str_date)
iso_date = arr_str[2]+'-'+arr_str[0][:2]+'-'+arr_str[1]

Gibt es eine andere Möglichkeit, dies mit Python zu tun?

5
Reveclair 7 Okt. 2012 im 23:23

3 Antworten

Beste Antwort

Sie können das datetime Modul verwenden:

datetime.datetime.strptime(str_date, '%m/%d/%Y').date().isoformat()

Oder als laufender Code:

>>> import datetime
>>> str_date = '2/28/1987'
>>> datetime.datetime.strptime(str_date, '%m/%d/%Y').date().isoformat()
'1987-02-28'
17
Martijn Pieters 7 Okt. 2012 im 19:27

Ich würde das datetime Modul verwenden, um es zu analysieren:

>>> from datetime import datetime
>>> date = datetime.strptime('2/28/1987', '%m/%d/%Y')
>>> date.strftime('%Y-%m-%d')
'1987-02-28'
6
Blender 7 Okt. 2012 im 19:27

Was Sie haben, ist fast so, wie ich es schreiben würde. Die einzige wesentliche Verbesserung, die ich vorschlagen kann, ist die Verwendung von einfachem altem split anstelle von re.split, da Sie keinen regulären Ausdruck benötigen:

arr_str = str_date.split('/')

Wenn Sie etwas komplizierteres tun müssten, würde ich time.strftime , aber das ist deutlich teurer als String-Bashing.

1
zwol 7 Okt. 2012 im 19:27