2

これは私がこれまでやってきたことです。私はpythonが初めてです。私が知りたいのは、日付文字列に文字が存在するときに無効な日付を取得する方法です。01/x1/2012 のように、日付に負の数を入力すると、無効な日付が出力されます。インポートまたはカレンダーを使用しない

dateStr = input("Date: ")
monthStr, dayStr, yearStr = dateStr.split("/")

months = ["January", "February","March", "April", "May", "June", "July", "August","September","October", "November","December"]
monthStr = months[int(monthStr)- 1]


print ("The date is:", monthStr, dayStr+",", yearStr)

if chr in dateStr:
    print("Invalid date")
4

2 に答える 2

3

これらのことは、通常、 を使用するとはるかに簡単に実行できdatetimeます。

import datetime
date_str = input("Date: ")
try:
    date = datetime.datetime.strptime(date_str,'%m/%d/%Y')
except ValueError:
    print ("Bad date")

日時なし:

def parse_date(date_str):
    pieces = date_str.split('/')
    try:
        for piece in pieces:
           assert int(piece) > 0
    except (ValueError,AssertionError):
        print ("Bad Date")
    else:
        print ("Good date")

parse_date('01/x1/2010')   #Bad Date
parse_date('01/-1/2010')   #Bad Date
parse_date('01/01/2010')   #Good date
于 2012-10-25T01:30:32.907 に答える
0

私は、有効性のために正規表現で日付を解析すると言います。まず、この正規表現は、x が数値である xx/xx/xxxx 形式の任意の日付に一致します。

/d{1,2}//d{1,2}//d{4}

正規表現をカスタマイズして、有効な一致を確認できます。

編集:datetimeを使用する方が良い考えのようです

于 2012-10-25T01:30:49.277 に答える