在python中如何将字符串转换成dict转义特殊字符

2024-05-07 23:53:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将以下字符串转换为字典,其中IP将成为密钥,而|之后的所有内容都将成为值:

my_string = '''10.11.22.33|{"property1": "0",     "property2": "1", "property3":     "1", "property4": "1", "property5": "0"}
10.11.22.34|{"property1": "0",     "property2": "0", "property3":     "1", "property4": "1", "property5": "0", "property6": "0", "property7": "1", "property8": "0", "property9": "0", "property10": "1"}'''

这是我尝试过的代码:

^{pr2}$

但是,我得到一个错误:

ValueError: dictionary update sequence element #1 has length 1; 2 is required

所以,我把我的_字符串简化为一行:

my_string = '10.11.22.33|{"property1": "0",     "property2": "1", "property3":     "1", "property4": "1", "property5": "0"}'

并使用此代码首先拆分行:

wow = my_string.split('|')

输出:

['10.11.22.33', '{"property1": "0",     "property2": "1", "property3":     "1", "property4": "1", "property5": "0"}']

上面是两个元素的列表。但是,当我试图从中创建字典时,它失败了,并出现以下错误:

d = dict(wow)

输出:

ValueError: dictionary update sequence element #0 has length 11; 2 is required

我不想修改这个值-它需要保持原样。把这一行输入字典的正确方法是什么

{'10.11.22.33': '{"property1": "0",     "property2": "1", "property3":     "1", "property4": "1", "property5": "0"}'}

这是python2.6。在


Tags: 字符串代码stringdictionary字典my错误update
2条回答

您需要先split将字符串放在\n上:

dict(ip.split('|') for ip in s.split('\n'))

您还可以查看^{}

^{pr2}$

其中s是您的字符串

您的第一种方法是正确的,只是它在错误的位置拆分,因为^{}默认使用空格作为分隔符。请改为尝试^{}

d = dict(node.split('|') for node in my_string.splitlines())

相关问题 更多 >