12

文字列から日付を解析するために python-dateutil を使用しています。

import dateutil.parser
print dateutil.parser.parse('some null string', fuzzy=True).date()
2012-10-18
print dateutil.parser.parse('some 31 Oct 2012 string', fuzzy=True).date()
2012-10-31

私が期待しているのはdateutil.parser.parse('some null string', fuzzy=True).date()、例外をスローすることですが、現在の日付を返しています。指定された文字列に日付が見つからない場合、誰かが現在の日付を取得しないようにする方法を教えてもらえますか?

前もって感謝します。

4

1 に答える 1

15

dateutil docs、特に解析関数(私のものを強調)を参照してください。

さらに、次のキーワード引数を使用できます。

デフォルト指定 されている場合、これは日時インスタンスである必要があります。解析日で欠落しているフィールドはすべて、このインスタンスからコピーされます。デフォルト値は、現在の日付である00:00:00amです

... (をちょきちょきと切る) ...

fuzzy fuzzyがTrueに設定されている場合、文字列内の不明なトークンは無視されます。

に設定fuzzyしたTrue場合、すべての不明なトークンを単に無視するため、例外はスローされません。また、default引数が渡されないため、現在の日付が返されます。

したがって、解決策は、にfuzzy設定したままにしFalseて、無効な形式の文字列が例外をスローするようにすることです。または、変換が失敗したことを示すために、返された日時が現在の日付である00:00:00amと等しいかどうかを確認します。

于 2012-10-20T13:20:27.887 に答える