我有一个名称以“gbk”编码的目录列表,例如:
dirs
|- b'\xb6\xb0'/
|- b'\xc1\xb1'/
|- b'\xc9\xdd'/
但是,当我使用时os.listdir()
返回一个 str 列表,如下所示:
["b'\\xb6\\xb0'", "b'\\xc1\\xb1'", "b'\\xc9\\xdd'"]
如何将字符串转换为字节并对其进行解码以获取原始字符?我试过了str.encode.decode
,但还是不行。
谢谢。
您已使用对象的字符串表示形式bytes
作为目录名称,而不是使用编码字节字符串作为名称来创建目录。要撤消掠夺,您可以在这种特殊情况下使用ast.literal_eval()
评估字符串表示,然后解码结果bytes
对象:
import os
import ast
dirs = [ast.literal_eval(d).decode('gbk') for d in os.listdir(...)]
请注意,ast.literal_eval()
此处仅用于恢复目录名称,您应该正确地重新创建它们;换句话说,它们一开始就不应该以这种方式创建。