我正在使用二进制文件,该二进制文件以python格式的列表格式返回字符串: 例如:
"['BONE'N'T','me & me',]\n"
现在我想将其转换为列表,但是如果我使用eval或ast.literal_eval
,则此操作将失败Error:
eval(s.strip("\n"))
***ERRORTRACEBACK***
File "<string>", line 1
~ ['BONE'N'T','me & me',]
~ ^
~ SyntaxError: invalid syntax
********************
***ERROR*** <type 'exceptions.SyntaxError'>
<type 'exceptions.SyntaxError'> invalid syntax (<string>, line 1) []
我希望得到一个完整的字符串列表。
编辑: 我设法修复它使用: 清理列表: unsanitized_object_list.lstrip(“ [”)。rstrip(“,]”)。split(“,”)
然后清除列表中的每个元素: unsanitized_object_name.lstrip(“'”)。rstrip(“'”)
这很不优雅,希望有一个更优雅的解决方案:-)
答案 0 :(得分:0)
失败,因为您的示例的Python列表语法无效。如果'BONE'N'T'
应该是单个列表项,则需要对字符串中的引号进行转义。
>>> eval("['BONE\\'N\\'T','me & me',]")
["BONE'N'T", 'me & me']
答案 1 :(得分:0)
这似乎是一个足够好的解决方案:
[token.strip('\'')for data.strip('\ r \ n []')。split(',')]