2

フリーテキスト検索機能を実装しています。ユーザーは、日付文字列などの任意のキーワードを入力できます。

「2013 年 10 月」、「2013 年 10 月」、「2013 年 10 月」などはすべて認識される必要があります。また、App Engine 検索 API は日付形式を YYYY-MM-DD としてしか認識しないため、「2013 Oct」を取得した場合、「search_date >= 2013-10-01 and search_date <= 2013-10-31」に変換する必要があります。 .

私はなんとかdateutil.parser.parse(search_date_str)を使用しましたが、日付コンポーネントが欠落している場合、今日のデータが使用されるという問題があります。たとえば、「2013 Oct」は「2013-10-27」として解析されます。その場合、ユーザーが「2013 Oct 27」と入力しているのか、単に「2013 Oct」と入力しているのかわかりません。年で検索する場合も同じです...ユーザーが「2013」を検索したい場合は、「2013-10-27」ではなく[2013-01-01、2013-12-31]に変換できるはずです

どうすればいいのかわからない?RegExが必要かどうかを考えています(私はそれが本当に苦手です...)

4

1 に答える 1

1

組み込みのdatetimeモジュール ( http://docs.python.org/2/library/datetime.html )、特にdatetime.strptime関数( http://docs.python.org/2/library/datetime ) を見てください。 .html#strftime-strptime-behavior )。これによりdatetime、文字列からさまざまな形式のオブジェクトを作成できます。たとえば、次のようにします。

theString = "2013-10"
theDate = datetime.strptime(theString, "%Y-%m")
theString2 = "2013 Oct"
theDate2 = datetime.strptime(theString, "%Y %b")

など、さまざまな組み合わせ。許可されている入力形式を制限すれば、はるかに簡単になりますが、とにかくこれはあなたの人生を楽にするはずです. datetimeモジュールが既にこれを処理しているため、正規表現を記述する必要はありません。

于 2013-10-27T11:42:13.843 に答える