2024-09-30 14:27:00 发布
网友
我有一个文件,它的内容是
{'FileID': 'a3333.txt','Timestamp': '2014-12-05T02:01:28.271Z','SuccessList':'a,b,c,d,e'}
当我使用python读取文件时,得到的字符串为
我希望删除字符串开头和结尾的双引号。从python文档中,我了解到,如果字符串中有单引号,python会自行添加双引号以避免转义。在
您可以使用
import re x="{'FileID': 'a3333.txt','Timestamp': '2014-12-05T02:01:28.271Z','SuccessList':'a,b,c,d,e'}" print dict(re.findall(r"""'([^']*)'\s*:\s*'([^']*)'""",x))
如果您的字符串实际上包含双引号(可能不是,因为它们可能只是打印表示的一部分),您可以用一个切片来去掉它们,例如
>>> hello = '"hello more stuff things"' >>> hello '"hello more stuff things"' >>> hello[1:-1] 'hello more stuff things'
注意,在这种情况下,外部单引号不是字符串的一部分,它们只是打印表示的一部分。在
如果存储的文件是JSON格式,则它们是无效的。JSON格式不允许使用单引号来分隔字符串。假设在键/值字符串中没有单引号,可以用双引号替换单引号,然后使用JSON模块读入:
import json x = "{'FileID': 'a3333.txt','Timestamp': '2014-12-05T02:01:28.271Z','SuccessList':'a,b,c,d,e'}" x = x.replace("'", '"') j = json.loads(x) print j
产量:
或者:
如果数据是Python dict的字符串表示,则可以使用eval读入它。使用eval是危险的(参见Ned Batchelder对此的想法)。也就是说,如果您自己编写了该文件,并且确信它不包含恶意代码,则可以使用eval将该字符串作为Python源代码读取:
dict
eval
x = "{'FileID': 'a3333.txt','Timestamp': '2014-12-05T02:01:28.271Z','SuccessList':'a,b,c,d,e'}" eval(x, {'__builtins__': {}})
不过,别养成这种习惯!正确的方法是以适当的序列化格式将数据保存到文件中,然后使用json模块这样的库从磁盘读取数据。在
json
您可以使用
如果您的字符串实际上包含双引号(可能不是,因为它们可能只是打印表示的一部分),您可以用一个切片来去掉它们,例如
注意,在这种情况下,外部单引号不是字符串的一部分,它们只是打印表示的一部分。在
如果存储的文件是JSON格式,则它们是无效的。JSON格式不允许使用单引号来分隔字符串。假设在键/值字符串中没有单引号,可以用双引号替换单引号,然后使用JSON模块读入:
产量:
^{pr2}$或者:
如果数据是Python
dict
的字符串表示,则可以使用eval
读入它。使用eval
是危险的(参见Ned Batchelder对此的想法)。也就是说,如果您自己编写了该文件,并且确信它不包含恶意代码,则可以使用eval
将该字符串作为Python源代码读取:产量:
^{pr2}$不过,别养成这种习惯!正确的方法是以适当的序列化格式将数据保存到文件中,然后使用
json
模块这样的库从磁盘读取数据。在相关问题 更多 >
编程相关推荐