0

データベースから読み取られ、Excelファイルに書き込まれるときYYYYMMDDに、の形式の日付を変換しようとしています。MM/DD/YYYYPerlを使用して、次のことを行います。

var=~s/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])/$5$6\/$7$8\/$1$2$3$4/;

これはすべて、データベース情報を読み込んでいる「forrowinrows」ループ構造で発生していることに注意してください。

どんな助けでも大歓迎です。

4

4 に答える 4

4

正規表現を使用する代わりに、pythonsdatetimeモジュールを使用できます。

または、2 つを組み合わせることができますが、これは日付の書式設定を変更するためのより明確な方法です。Python は、明快さと読みやすさが効率と同じくらい重要な言語です。以下のコードを見ると、日付スタンプを変更していることがわかりますが、正規表現を使用すると、かなり不明確な場合があります。

datetime 要素を読み取り、必要に応じて記述します。

>>> from datetime import datetime
>>> datestring = '20121212' # 2012 / 12 /12 
>>> datetime.strptime(datestring, '%Y%m%d').strftime('%m/%d/%Y')
'12/12/2012'
于 2012-12-13T16:00:58.163 に答える
2

私は単純な文字列操作に行きます-確かにそれほど明確ではありません...

>>> s = '20121213'
>>> '/'.join( (s[4:6], s[6:], s[:4]) )
'12/13/2012'

とは対照的に:

>>> re.sub(r'(\d{4})(\d{2})(\d{2})', r'\2/\3/\1', s)
'12/13/2012'

あなたが以下に投稿したようなreを使用することを主張するつもりなら

dateFormatted = row ["TRADE_DATE"] dateFormatted = re.sub(r'(\ d)(\ d)(\ d)(\ d)(\ d)(\ d)(\ d)(\ d)'、 r'\ 5 \ 6 / \ 7 \ 8 / \ 1 \ 2 \ 3 \ 4'、dateFormatted)–user19013415分前

次に、文字列の書式設定を(ab)そのまま使用できます

>>> '{4}{5}/{6}{7}/{0}{1}{2}{3}'.format(*s)
'12/13/2012'
于 2012-12-13T16:01:54.750 に答える
2

正規表現を使用する必要はありません-PythonはPerlと同じように正規表現を推奨しません-しかし、確かに正規表現を使用できます:

import re 
re.sub(r'(\d{4})(\d{2})(\d{2})', r'\2/\3/\1', datestring)
于 2012-12-13T16:05:10.633 に答える
0

正規表現なしで、ここで簡単にアクセスできると思います。

>>> s = '20121225'
>>> conv = '/'.join((s[6:8], s[4:6], s[0:4]))
>>> conv
'25/12/2012'
于 2012-12-13T16:01:39.507 に答える