Python 在字典中将数字日期转换为单词
我有一个示例字典Python 在字典中将数字日期转换为单词,python,string,date,datetime,dictionary,Python,String,Date,Datetime,Dictionary,我有一个示例字典d,其中包含日期,如上文所示'2003-01-01 13:01:00'。(我的d的len实际上是~700k,包含各种这样的日期。)我想知道是否有办法将日期转换回单词。例如,'2003-01-01 13:01:00'将变成'2003年1月1日下午1:01' 我期望的输出是这样的 d = {'A1': ['C', '2003-01-01 13:01:00', 'Lang', '2012-06-02 07:00:00', '55901', '2001-09-05 0
d
,其中包含日期,如上文所示'2003-01-01 13:01:00'
。(我的d
的len
实际上是~700k,包含各种这样的日期。)我想知道是否有办法将日期转换回单词。例如,'2003-01-01 13:01:00'
将变成'2003年1月1日下午1:01'
我期望的输出是这样的
d = {'A1': ['C',
'2003-01-01 13:01:00',
'Lang',
'2012-06-02 07:00:00',
'55901',
'2001-09-05 00:00:00'],
'A2': ['Eds',
'2002-02-12 10:07:00',
'12-3-54']}
我如何才能完成此输出?
参考下图,它获取dict并迭代和打印格式。更新时间:2019.09.04
关于这一问题的全面落实:
导入日期时间
d={'A1':['C',
'2003-01-01 13:01:00',
"郎",,
'2012-06-02 07:00:00',
'55901',
'2001-09-05 00:00:00'],
“A2”:[“Eds”,
'2002-02-12 10:07:00',
'12-3-54']}
def num_2_单词(n):返回“”。加入([
str(n),
['th',st',nd',rd',th'][min(n%10,4)]如果不是11我已经写了这个代码,使用map来加速。但是它是否能加速还不确定。而且,我不知道几天后如何添加st
导入日期时间、时间
d={'A1':['C',
'2003-01-01 13:01:00',
"郎",,
'2012-06-02 07:00:00',
'55901',
'2001-09-05 00:00:00'],
“A2”:[“Eds”,
'2002-02-12 10:07:00',
'12-3-54']}
def时间重新格式化(numTime):
尝试:
date=datetime.datetime.StrTime(numTime,“%Y-%m-%d%H:%m:%S”)
strTime=date.strftime(“%B%d,%Y位于%I%p”)
除:
strTime=None
返回时间
def processDictItem(e):
k、 v=e
对于i,枚举(v)中的数据:
strtime=时间重新格式化(数据)
如果strtime不是None:
v[i]=strtime
返回(k,v)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
d=dict(映射(processdictem,d.items())
印刷品(d)
输出:
{'A1':['C','2003年1月1日下午1点','Lang','2012年6月2日上午7点','55901','2001年9月5日上午12点',
‘A2’:[‘Eds’,‘2002年2月12日上午10点’,‘12-3-54’]
您可以创建一个函数,该函数接受一个列表,将列表中的每个项目解析为datetime对象,如果失败,则跳过,将其重新构建为所需的日期格式,然后返回列表。您应该始终发布代码,而不是代码的图像。此外,您的代码只对列表而不是dict进行操作。
d = {'A1': ['C',
'January 1st, 2003 at 1:01pm',
'Lang',
'June 2nd, 2012 at 7:00am',
'55901',
'September 5th, 2001'],
'A2': ['Eds',
'February 12th, 2002 at 10:07am',
'12-3-54']}
d = {'A1': ['C',
'2003-01-01 13:01:00',
'Lang',
'2012-06-02 07:00:00',
'55901',
'2001-09-05 00:00:00'],
'A2': ['Eds',
'2002-02-12 10:07:00',
'12-3-54']}
for key, value in d.items():
new_value = []
for item in value:
try:
date = datetime.datetime.strptime(item, '%Y-%m-%d %H:%M:%S')
date_str = datetime.datetime.strftime(date, '%B , %Y at %I:%M%p')
new_value.append(date_str)
except:
new_value.append(item)
d[key] = new_value
print(d)
import datetime
import json
d = {'A1': ['C',
'2003-01-01 13:01:00',
'Lang',
'2012-06-02 07:00:00',
'55901',
'2001-09-05 00:00:00'],
'A2': ['Eds',
'2002-02-12 10:07:00',
'12-3-54']}
suf = lambda n: "%d%s"%(n,{1:"st",2:"nd",3:"rd"}.get(n if n<20 else n%10,"th"))
daydict = dict(zip(range(1,32), [suf(n) for n in range(1,32)]))
#construct the datetime according to the form of 'January 1st, 2003 at 1:01pm'
for k, v in d.items():
index = 1
for item in v[1::2]:
tem = datetime.datetime.strptime(item, '%Y-%m-%d %H:%M:%S')
x = tem.hour-12 if tem.hour > 12 else tem.hour
y = 'pm' if tem.hour > 12 else 'am'
d[k][index] = ' '.join([tem.strftime('%B'), daydict[tem.day] + ',', str(tem.year), str(x)+':'+tem.strftime('%M')+y])
index += 2
print(json.dumps(d, indent=2))
{
"A1": [
"C",
"January 1st, 2003 1:01pm",
"Lang",
"June 2nd, 2012 7:00am",
"55901",
"September 5th, 2001 0:00am"
],
"A2": [
"Eds",
"February 12th, 2002 10:07am",
"12-3-54"
]
}