我有一个名称在' 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
,但仍然无法正常工作。
感谢。
答案 0 :(得分:1)
您已使用string representation of bytes
objects作为目录名称,而不是使用编码字节字符串作为名称创建目录。要撤消掠夺,您可以在此特定情况下使用ast.literal_eval()
来评估字符串表示,然后解码生成的import os
import ast
dirs = [ast.literal_eval(d).decode('gbk') for d in os.listdir(...)]
对象:
ast.literal_eval()
请注意,<img src="cid:ii_jhzwfy6l0_163c993284ad67a3" width="295" height="65">
<img src="cid:ii_jhzwfy6l0_163c99368434384384a3" width="295" height="65">
this is text with some images
仅用于恢复目录名称,您应该正确地重新创建它们;换句话说,它们不应该以这种方式创建。