は、"\d"
と"\w"
等正規表現トークンは正規表現自体と同じように解釈されません。
日付をリテラルテキスト"\d+/\w/\d+"
に置き換えています。代わりに、あなたは"14/8/2012"
と"14/August/2012"
と"14. August 2012"
で"14.8.2012"
のような文字列に置き換えられます
re.sub(r"(\d+)\.\s?(\w+)\.?\s?(\d+)", r"\1/\2/\3", text)
これを使用する必要があります。
実際の値(曜日、月、年)が必要な場合は、代わりに2番目の引数として関数を渡すことができます。あなたが具体的かつのみヶ月(例えば、8、08、8月、8月は)受け入れられるようにしたい場合は
def replaceValues(match):
day = match.group(1)
month = match.group(2)
year = match.group(3)
# add some code here that will do something with day, month, and year
return day + "/" + month + "/" + year
re.sub(r"(\d+)\.\s?(\w+)\.?\s?(\d+)", replaceValues, text)
することは、あなたは以下のコードを使用することができます
import datetime
def replaceValues(match):
day = match.group(1)
month = match.group(2)
year = match.group(3)
# test if month is ACTUALLY a month
formats = ['%m', '%b', '%B']
for format in formats:
try:
datetime.datetime.strptime(month, format)
break
except:
pass
else:
# month is not a valid month name
return match.group(0)
# add some code here that will do something with day, month, and year
return day + "/" + month + "/" + year
re.sub(r"(\d+)\.\s?(\w+)\.?\s?(\d+)", replaceValues, text)
をあなたが提供できますあなたがコードを自分で実行するために働いている 'text'の例です。 –
https://www.dropbox.com/s/y54cnq8uomkeg7w/Ernst%20Abbe%20-%20Gesammelte%20Abhandlungen%20III.txt?dl=0 – Marcel
バックリファレンスの使用方法を学びます。しかし、あなたは14歳にしたいですか? 「2012年8月」を「14/8月/ 2012」に変更しますか? –