如何将字符串转换为字典在python中转义特殊字符
问题描述:
我试图将以下字符串转换为字典,其中IP成为一个键,以及其他所有内容|成为一个值:如何将字符串转换为字典在python中转义特殊字符
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"}'''
这是我试过的代码:
d = dict(node.split('|') for node in my_string.split())
不过,我得到这个错误:
ValueError: dictionary update sequence element #1 has length 1; 2 is required
所以我简化的my_string只是一条线:
my_string = '10.11.22.33|{"property1": "0", "property2": "1", "property3": "1", "property4": "1", "property5": "0"}'
并使用此代码先sp点燃行:
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"}'}
这是Python 2.6。
答
您的第一种方法是正确的,只是它在错误的位置分割,因为str.split()
默认情况下使用空格作为分隔符。尝试str.splitlines()
代替:
d = dict(node.split('|') for node in my_string.splitlines())
答
您需要split
在您的字符串\n
第一:
dict(ip.split('|') for ip in s.split('\n'))
您也可以看看到re.findall
:
dict(re.findall(r'(\d+\.\d+\.\d+\.\d+\d+).*?(\{.*?\})', s))
哪里s
是您的字符串
这工作和很简单。阅读某处,分裂是在新的线人物分裂......一定是在做梦。猜猜是时候休息一下了。 – Lidia