1、说明
这篇文章是帮一个群友解答的问题。
他有一个需求,就是对于日期的录入都是中文形式的,需要转换为数字形式的。由于python库中没有函数直接进行转换,因此我写了本篇文章。
2、测试源数据如下
3、代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
df = pd.read_excel(r "C:\Users\黄伟\Desktop\chinese_english.xlsx" )
display(df)
def func(x):
year = x.split( "年" )[ 0 ]
month = x.split( "年" )[ 1 ].split( "月" )[ 0 ]
day = x.split( "年" )[ 1 ].split( "月" )[ 1 ].split( "日" )[ 0 ]
if len (day) > = 3 :
day = day[ 0 ] + day[ 2 ]
chinese_english = dict (零 = 0 ,一 = 1 ,二 = 2 ,三 = 3 ,四 = 4 ,五 = 5 ,六 = 6 ,七 = 7 ,八 = 8 ,九 = 9 ,十 = 10 )
year = "".join( str (chinese_english[i]) for i in year)
month = "".join( str (chinese_english[i]) for i in month)
day = "".join( str (chinese_english[i]) for i in day)
if len (month) = = 3 :
month = month[ 0 ] + month[ 2 ]
if len (day) = = 3 :
day = day[ 0 ] + day[ 2 ]
final_date = year + "." + month + "." + day
return final_date
df[ "final_date" ] = df[ "日期" ]. apply (func)
display(df)
|
结果如下:
补充知识:python 格式化时间含中文报错
报错内容
UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in position 2: Illegal byte sequence:
word = (datetime.today() + timedelta(days=keyDate.get(k, 0))).strftime('%Y年%m月%d日')
将上述代码更改为:
word = (datetime.today() + timedelta(days=keyDate.get(k, 0))).strftime('%Y{y}%m{m}%d{d}').format(y='年',m='月',d='日')
即可。
以上这篇python实现将中文日期转换为数字日期就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/weixin_41261833/article/details/104265937