python中time.strftime不支持中文,报错UnicodeEncodeError: 'locale' cod

    作者:课课家教育更新于: 2019-08-02 16:51:02

    大神带你学编程,欢迎选课

    Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发

    使用time.strftime将 "2020-10-10 10:10:10" 转化为  2020年10月10日10时10分10 报错:

    import time
    timestr="2020-10-10 10:10:10"
    t=time.strptime(timestr,"%Y-%m-%d %H:%M:%S")
    print(time.strftime("%Y年%m月%d日 %H时%M分%S秒",t))

    python中time.strftime不支持中文,报错UnicodeEncodeError: &039locale&039 cod_python教程_python数据库操作_python培训_课课家

    根据错误可以看出,没有执行成功的原因是"%Y年%m月%d日 %H时%M分%S秒"中包含了中文,中文没有转化为unicode编码失败的。

    解决方法:

    方法一:先转为uncode编码执行,执行完后转为utf-8显示

    import time
    timestr="2020-10-10 10:10:10"
    t=time.strptime(timestr,"%Y-%m-%d %H:%M:%S")
    print(time.strftime("%Y年%m月%d日 %H时%M分%S秒".encode('unicode_escape').decode('utf8'),t).encode('utf-8').decode('unicode_escape'))

    执行结果:

    方法二:修改语言符号 详情

    import time,locale
    timestr="2020-10-10 10:10:10"
    t=time.strptime(timestr,"%Y-%m-%d %H:%M:%S")
    locale.setlocale(locale.LC_CTYPE,'chinese')
    print(time.strftime("%Y年%m月%d日 %H时%M分%S秒",t))

    执行结果:

    方法三:重写一个自定义转化函数

    def change_time(timeStr:str,t_int=False)->str:
        import re
        t_text = ['年', '月', '日 ', '时', '分', '秒']
        re_t = re.compile("[\\d|\\.]+")
        str_time = ''
        for k, v in zip(t_text, re_t.findall(timeStr)):
            if t_int and '.' in v :
                v=re.sub('\\.\\d+', '', v)
            str_time += str(v) + k
        return str_time
    
    if __name__ == '__main__':
        print(datetime.now())
        t=change_time(str(datetime.now()))
        int_t=change_time(t,True)
        float_t=change_time(t)
        print(int_t)
        print(float_t)

课课家教育

未登录