2010-02-02 74 views
1

的我想要做的Python如下:蟒蛇正則表達式驗證類型的字符串

  1. 驗證,如果一個UTF8字符串是一個整數。
  2. 驗證UTF8字符串是否爲浮點數。
  3. 驗證UTF8字符串是否具有長度(1-255)。
  4. 驗證UTF8字符串是否爲有效日期。

我完全是新的python,我相信這應該用正則表達式來完成,除了可能是最後一個。感謝您的幫助!

+1

可能dublicate:http://stackoverflow.com/questions/2103071/determine-the-type-of-a-value-which-is-represented-as-string-in-python – 2010-02-02 12:27:45

+0

是的,那一個很有幫助以及。謝謝! – khelll 2010-02-02 15:10:11

+0

如果你有問題,並用正則表達式解決它,現在你有兩個問題! – 2010-02-02 15:28:22

回答

6

正則表達式是不是在這裏一個很好的解決方案。

  1. 驗證如果一個UTF8字符串是一個整數:

    try: 
        int(val) 
        is_int = True 
    except ValueError: 
        is_int = False 
    
  2. 驗證如果一個UTF8字符串是一個浮動:與上面相同,但具有float()

  3. 驗證如果一個UTF8字符串是長度(1-255)的:

    is_of_appropriate_length = 1 <= len(val) <= 255 
    
  4. 驗證如果一個UTF8字符串是一個有效的日期:這是不平凡的。如果你知道正確的格式,你可以使用time.strptime()這樣的:

    # Validate that the date is in the YYYY-MM-DD format. 
    import time 
    try: 
        time.strptime(val, '%Y-%m-%d') 
        is_in_valid_format= True 
    except ValueError: 
        is_in_valid_format = False 
    

編輯:另一件事要注意。由於您特別提到了UTF-8字符串,因此首先將它們解碼爲Unicode是有意義的。這將這樣做:

my_unicode_string = my_utf8_string.decode('utf8') 

這是有趣的是,試圖將Unicode字符串轉換爲使用int()一個整數,例如,當你不侷限於在大多數使用了「西方阿拉伯數字」數字世界。 int(u'١٧')int(u'१७')將正確解碼爲17,即使它們分別是印度語阿拉伯語和德文吉語數字。

1
  1. INT()和檢查異常
  2. 浮動() - 但你是什麼意思浮動?
  3. INT(),然後檢查是否
  4. 使用日期時間格式化
2

爲什麼要使用正則表達式使用?我相信它會更慢,更麻煩。

int()float()方法或更好的isdigit()方法在這裏很好地工作。

a = "03523" 
a.isdigit() 
>>> True 

b = "963spam" 
b.isdigit() 
>>> False 

對於問題3,你的意思是 「驗證,如果一個UTF8字符串的長度是(1-255)的一個數字」?

爲什麼不:

def validnumber(n): 
    try: 
    if 255 > int(n) > 1: 
     return True 
    except ValueError: 
     return False