在python中使用以0开头的数字索引数据类型[duplicate]

问题描述 投票:0回答:5

这个问题在这里已有答案:

我有一个功能,将3个数字转换为日期。

def conv(month, day, year):
    months = ('None','January','February','March','April','May','June','July','August','September','October','November','December')
    print(months[month],str(day)+',',year)

所以如果我运行这样的函数:conv(6,17,2016)输出将是:

June 17, 2016

到目前为止一切都那么好,但是如果我给06个而不是6个怎么样我怎么能得到像上面那样相同的输出呢?是否有任何方法可以使用06并以某种方式将其转换为6用于索引或者我必须只给6并且没有办法做到这一点?

python python-3.x indexing
5个回答
1
投票

假设您知道06将自动引发语法错误,这意味着您只能创建一个字符串,如"06"

用那说,简单的用于转换为int

number = int(month)

1
投票

这将更容易消化:

import datetime

def conv(month, day, year):
    d = datetime.date(year, month, day)
    print(d.strftime("%B %d, %Y"))

1
投票

我建议使用datetime

In [31]: d = datetime.datetime.now().date()

In [32]: d.strftime('%B %d, %Y')
Out[32]: 'August 30, 2018'

或者使用calender

import calendar
def conv(month, day, year):
    print(calendar.month_name[int(month)],str(day)+',',year)

0
投票

把你的06送到int - 那将是正常的6.所以你将使用print(months[int(month)],str(day)+',',year)打印

但正如评论中所提到的 - 只需使用datetime模块:-)


0
投票

你可以将元组转换为datetime然后使用.strftime格式化它:

>>> tup=(2018,8,30)
>>> from datetime import datetime
>>> datetime(*tup)
datetime.datetime(2018, 8, 30, 0, 0)
>>> print(datetime(*tup)) # print
2018-08-30 00:00:00
>>> datetime(*tup).strftime('%B %d, %y')
'August 30, 18'
>>> 
© www.soinside.com 2019 - 2024. All rights reserved.