私は文字列を持っています。正規表現による日付抽出
s = "20160204094836A"
正規表現を使用して次のように日付を取得します。
date = "20160204"
start_date = date(int("2016"), int("02"), int("04"))
したがって、短く私は年月日を取得する必要があります。 正規表現でそのようなことが可能ですか?
私は文字列を持っています。正規表現による日付抽出
s = "20160204094836A"
正規表現を使用して次のように日付を取得します。
date = "20160204"
start_date = date(int("2016"), int("02"), int("04"))
したがって、短く私は年月日を取得する必要があります。 正規表現でそのようなことが可能ですか?
:正規表現で
s = "20160204094836A"
year = s[:4]
day = s[4:6]
month = s[6:8]
print(year, day, month)
:
import re
s = "20160204094836A"
result = re.search(r"^(\d{4})(\d{2})(\d{2})", s)
year = int(result.group(1))
day = int(result.group(2))
month = int(result.group(3))
print(year, day, month)
あなたは正規表現を使用する必要がある場合は、次にあなたが、マッチしたグループを参照intにそれらをキャストし、現在までにそれらを渡すことができ^(\d{4})(\d{2})(\d{2}).*$
のようなパターンを使用することができます。
単純な形式の数字列なので、代わりに部分文字列を使用するとよいでしょう。正規表現がなければ
また、直接このタスクにdatetime.datetime.strptime()
を使用することができます。
from datetime import datetime
s = "20160204094836A"
start_date = datetime.strptime(s[:8], "%Y%m%d").date()
start_date
は、完成datetime.date
オブジェクトを保持します。
s[:8]
は、文字列s
の最初の8文字を表します。strptime()
は、残りの未解析文字を処理できません。
"%Y%m%d"
は、あなたの文字列を解析するためのパターンを記述しています。
%Y
4桁の年番号( "2016")、
%m
は2桁の月番号( "02")、
%d
です何で
、2桁の日番号( "04")でありますルール?上記の文字列から '02'と' 04'をどうやって取得しましたか?ここにパターンがありますか?私はここであなたが正規表現を必要としないと感じています。 – Maroun
パターンなし。私はちょうど文字列を持っており、私はこの方法で抽出する必要があります – sam
次に、最初の4桁を抽出し、次のペアを抽出します。 – Maroun