处理字符串中的单引号

我正在使用以 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("'")


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


翻阅古今
浏览 139回答 2
2回答

哈士奇WWW

这似乎是一个足够好的解决方案:[token.strip('\'') for token in data.strip('\r\n[]').split(',')]

犯罪嫌疑人X

它失败了,因为您的示例不是 Python 列表的有效语法。如果'BONE'N'T'应该是单个列表项,则需要转义字符串内的引号。>>> eval("['BONE\\'N\\'T','me & me',]")["BONE'N'T", 'me & me']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python