2016-02-14 43 views
1

當我在C中定義一個結構時,我可以使用scanf函數從標準輸入中獲取和格式化數據。如何在Python中過濾和格式化來自輸入函數的數據?

例如:

struct date { int day; int month; int year;}; 
struct date today; 

scanf("%i/%i/%i", &today.day, &today.month, &today.year) 

但我怎麼能在Python得到相同的功能,如果我已經定義了一個新的類?我試圖編寫代碼,但它太長了。你能介紹一個簡單的方法嗎?

+0

這無論如何都不會涉及到C! –

+0

將函數寫入文件並通過'import'使用它。這將在一定程度上簡化。 – MASh

回答

2

代碼:

class Date(object): 
    def __init__(self, day=None, month=None, year=None): 
     self.day = day 
     self.month = month 
     self.year = year 

val = raw_input("Enter date in day/month/year format: ") 
vals = val.split("/") 
today = Date(*vals) 

print "{}/{}/{}".format(today.day, today.month, today.year) 

給出:

% python filterformat.py 
Enter date in day/month/year format: 14/02/2016 
14/02/2016 
+0

我可能會建議使用'input'而不是'raw_input'來排除非整數;那麼你總是可以處理例外。 –

+0

非常好的提示,但我怎樣才能直接從格式「14/02/2016」獲取數據,而不是單獨輸入數據?與C中的「scanf」函數相比,它仍然太長,不是嗎? – Junchoon

+0

@Junchoon我已經更新了答案,接受一個字符串中的所有值,但是沒有真正的python等價於'scanf':'raw_input'(或者python3中的'input')是最好的,你真的可以做 –

0

您可以使用dateparser模塊。從文檔:

這將嘗試解析來自給定字符串的日期,試圖每次檢測語言。

parse函數將解析幾乎任何標準的日期格式,並從給定的字符串返回datetime對象,其中datetime是標準的,並構建到python中。從用戶

使用日期輸入:

import dateparser 
date_from_user=input('Enter a date') 
datetime_obj=dateparser.parse(date_from_user) 
print(datetime_obj.year, datetime_obj.month, datetime_obj.day) 
相關問題