处理字符串中的单引号

时间:2019-10-03 18:35:08

标签: python

我正在使用二进制文件,该二进制文件以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(“'”)

这很不优雅,希望有一个更优雅的解决方案:-)

2 个答案:

答案 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(',')]