zoukankan      html  css  js  c++  java
  • python中time.strftime不支持中文,报错UnicodeEncodeError: 'locale' codec can't encode character 'u5e74' in position 2: encoding error

    使用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))

    根据错误可以看出,没有执行成功的原因是"%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)

    执行结果:

  • 相关阅读:
    数据算法之汉诺塔
    Mvc模板页
    mvc局部视图
    Area区域
    mvc之文件下载
    MVC过滤器
    MVC_Ajax请求
    MVC之校验
    Json&Razor&控制器
    抓包分析,tcpdump 和 wireshark 配合使用的简单尝试
  • 原文地址:https://www.cnblogs.com/feiquan/p/11217534.html
Copyright © 2011-2022 走看看