【Python3】\u字符与中文字串互转

小水。



encodedecode

  1. str没有decode函数,但对应的有encode函数,该函数作用是转码为bytes对象
  2. bytes通过decode函数转换回对应的str
  3. 对于一些偏激的(可以用过分来形容)的字符串,例如一二三\\u56db\\u4e94\\u516d,是有相应的解决方法的。至于为什么我用“偏激”来形容,因为正常情况下是不应该出现这种混杂情况的,(出现这种情况多半是哪个煞x忽视字符编码问题直接一股脑字符串连接。
    使用str.encode('ascii','backslashreplace')将中文部分全转换为\u字符即可
  4. 若是出现其他类型的混乱字符串(例如掺杂utf-8编码的中文字串一二三\\xe5\\x9b\\x9b\\xe4\\xba\\x94\\xe5\\x85\\xad)的话,请先拎清楚到底是哪里造成的问题。这篇博客里不提供对应的解决方法,自己谋生路,写个函数逐字符转换也好,用re正则替换也罢,又或是使用codecs.register_error()注册一个新的编码器,反正能跑就行。


示例代码+运行结果:


tx1='123\\u56db\\u4e94\\u516d'
tx2='上下\\u5de6\\u53f3'

print(tx1)
print(tx2)
print()
print()

print(tx1.encode().decode("unicode-escape"))#这个encode使用utf-8转码,在遇到非ASCII时直接暴毙
print(tx2.encode().decode("unicode-escape"))#暴毙输出
print(tx1.encode('ascii','backslashreplace').decode('unicode-escape'))#这个encode会无视反斜杠字符的转码,同时对其他非ASCII字符转换为\u字符
print(tx2.encode('ascii','backslashreplace').decode('unicode-escape'))#转换成功

【Python3】\u字符与中文字串互转_第1张图片


补充:

这里是没有显式提到“中文转\u字符”,
但“中文转\u字符”这操作在上面的示例代码中有出现,
当然,除了str.encode('ascii','backslashreplace')也可以使用str.encode('unicode-escape')进行转换


参考:

  • str.encode函数参数-backslashreplace: https://www.w3school.com.cn/python/ref_string_encode.asp
  • str.encode函数参数-codecs.register_error():https://www.runoob.com/python/att-string-encode.html
  • codecs模块:https://cloud.tencent.com/developer/section/1371694

未经本人同意不得私自转载。本文发布于CSDN:https://blog.csdn.net/weixin_44733774/article/details/135211784

你可能感兴趣的:(python,开发语言)