Python相关

1 16进制字符串转换为中文

有时会出现字符串为 \xe6\xb5\x8b\xe8\xaf\x95 的情况

注意,这里并不是指下面的情况

#python代码
string1 = '\xe6\xb5\x8b\xe8\xaf\x95'
这里\x为一个整体,\xe6指代e6这个16进制数对应的acsii码,例子如下
>>> print('\x61')
a
网上搜的很多方法都是针对这种情况的,而且都是用python2直接decode再encode,python3已经没办法这么做了

而是指

string2  = '\\xe6\\xb5\\x8b\\xe8\\xaf\\x95'
这个字符串才代表\xe6\xb5\x8b\xe8\xaf\x95
有时从文件里面读取数据时,文件里直接就保存的\xe6\xb5\x8b\xe8\xaf\x95,这时python读取文件然后 fr.read()的结果就是string2的形式

个人的解决办法如下,感觉应该还有更方便的办法。。

#python代码
import binascii
string = '\\xe6\\xb5\\x8b\\xe8\\xaf\\x95'
print(string)

hex_str = string.replace('\\x','')
print(hex_str)

byte = binascii.a2b_hex(hex_str)
print(byte)

chs = byte.decode('utf-8')
print(chs)

输出结果:
\xe6\xb5\x8b\xe8\xaf\x95
e6b58be8af95
b'\xe6\xb5\x8b\xe8\xaf\x95'
测试

2 获取当前运行的脚本目录

os.path.dirname(os.path.abspath(file))

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容