2016-05-25 11 views
-6

私は文字列を持っています。正規表現による日付抽出

s = "20160204094836A" 

正規表現を使用して次のように日付を取得します。

date = "20160204" 
start_date = date(int("2016"), int("02"), int("04")) 

したがって、短く私は年月日を取得する必要があります。 正規表現でそのようなことが可能ですか?

+0

、2桁の日番号( "04")でありますルール?上記の文字列から '02'と' 04'をどうやって取得しましたか?ここにパターンがありますか?私はここであなたが正規表現を必要としないと感じています。 – Maroun

+0

パターンなし。私はちょうど文字列を持っており、私はこの方法で抽出する必要があります – sam

+0

次に、最初の4桁を抽出し、次のペアを抽出します。 – Maroun

答えて

5

:正規表現で

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) 
1

あなたは正規表現を使用する必要がある場合は、次にあなたが、マッチしたグループを参照intにそれらをキャストし、現在までにそれらを渡すことができ^(\d{4})(\d{2})(\d{2}).*$

のようなパターンを使用することができます。

単純な形式の数字列なので、代わりに部分文字列を使用するとよいでしょう。正規表現がなければ

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です何で