Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中过滤和格式化输入函数中的数据?_Python - Fatal编程技术网

如何在Python中过滤和格式化输入函数中的数据?

如何在Python中过滤和格式化输入函数中的数据?,python,Python,当我在C中定义一个结构时,我可以使用scanf函数从标准输入中获取和格式化数据 例如: struct date { int day; int month; int year;}; struct date today; scanf("%i/%i/%i", &today.day, &today.month, &today.year) 但是,如果我已经定义了一个新类,那么如何在Python中获得相同的函数呢?我曾试图编写一段代码,但太长了。您能介绍一种简单的方法吗?代码:

当我在C中定义一个结构时,我可以使用
scanf
函数从标准输入中获取和格式化数据

例如:

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

scanf("%i/%i/%i", &today.day, &today.month, &today.year)
但是,如果我已经定义了一个新类,那么如何在Python中获得相同的函数呢?我曾试图编写一段代码,但太长了。您能介绍一种简单的方法吗?

代码:

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

Python带有铃铛和口哨,请使用它们:

import datetime as dt

# input for python3, raw_input for python2
datestr = input('Please enter a date using this format: %d/%m/%Y')
date = dt.date.strptime(datestr, format='%d/%m/%Y')

print('You entered {:%d/%m/%Y}'.format(date))
有关更多信息,请参阅datetime文档: 您可以使用该模块。从文档中:

这将尝试解析给定字符串中的日期,每次都尝试检测该语言

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)

这与C无关!将函数写入文件,并通过
import
使用它。这将在一定程度上简化。我可能建议使用
input
而不是
raw\u input
来排除非整数;你可以随时处理例外情况。很好的提示,但是我如何直接从格式“14/02/2016”获取数据,而不是单独输入?与C中的“scanf”函数相比,它还是太长了,不是吗?@Junchoon我已经更新了答案,以接受一个字符串中的所有值,但是没有真正的python等价于
scanf
raw\u input
(或者python3中的
input
)是最好的do@NolenRoyalty,非常感谢。那是我想要的@Junchoon如果这是你想要的答案,请随意接受我的答案,表明问题已经得到了回答:)