如何在Python中拆分复杂字符串

如何在Python中拆分复杂字符串,python,python-2.7,Python,Python 2.7,给定以下字符串: my_string = "fan_num=2,fan1=0,fan2=0,chain_xtime8={X0=8,X1=3,X2=11},chain_offside_6=0,chain_offside_7=0,chain_offside_8=0,chain_opencore_6=0,chain_opencore_7=0,chain_opencore_8=0" 如何将其拆分以获得以下输出: [ fan_num=2, fan1=0, fan2=0, chain_x

给定以下字符串:

my_string = "fan_num=2,fan1=0,fan2=0,chain_xtime8={X0=8,X1=3,X2=11},chain_offside_6=0,chain_offside_7=0,chain_offside_8=0,chain_opencore_6=0,chain_opencore_7=0,chain_opencore_8=0"
如何将其拆分以获得以下输出:

[ 
  fan_num=2,
  fan1=0,
  fan2=0,
  chain_xtime8={X0=8,X1=3,X2=11},
  chain_offside_6=0,
  chain_offside_7=0,
  chain_offside_8=0,
  chain_opencore_6=0,
  chain_opencore_7=0,
  chain_opencore_8=0
]
我试过:

output = my_string.split(',')

但是,这会分割
链\u xtime8
值,这不是我想要的。我正在使用Python 2.7

通过一系列复杂的替换,我将此样式转换为JSON。然后使用
json.loads
可以将其转换为Python dict。这假设您不使用要替换的字符,而继续仅使用整数作为值

这显然可以收紧,但我想让它可读

import json

my_string = "fan_num=2,fan1=0,fan2=0,chain_xtime8={X0=8,X1=3,X2=11},chain_offside_6=0,chain_offside_7=0,chain_offside_8=0,chain_opencore_6=0,chain_opencore_7=0,chain_opencore_8=0"

my_string = '{"' + my_string + '"}'
my_string = my_string.replace('=', '":"')
my_string = my_string.replace(',', '","')
my_string = my_string.replace('"{', '{"')
my_string = my_string.replace('}"', '"}')
myDict = json.loads(my_string)
pprint
myDict
结果:

{'chain_offside_6': '0',
 'chain_offside_7': '0',
 'chain_offside_8': '0',
 'chain_opencore_6': '0',
 'chain_opencore_7': '0',
 'chain_opencore_8': '0',
 'chain_xtime8': {'X0': '8', 'X1': '3', 'X2': '11'},
 'fan1': '0',
 'fan2': '0',
 'fan_num': '2'}
还有一个例子-

print(myDict['chain_xtime8']['X0'])
>> 8

通过一系列复杂的替换,我将此样式转换为JSON。然后使用
json.loads
可以将其转换为Python dict。这假设您不使用要替换的字符,而继续仅使用整数作为值

这显然可以收紧,但我想让它可读

import json

my_string = "fan_num=2,fan1=0,fan2=0,chain_xtime8={X0=8,X1=3,X2=11},chain_offside_6=0,chain_offside_7=0,chain_offside_8=0,chain_opencore_6=0,chain_opencore_7=0,chain_opencore_8=0"

my_string = '{"' + my_string + '"}'
my_string = my_string.replace('=', '":"')
my_string = my_string.replace(',', '","')
my_string = my_string.replace('"{', '{"')
my_string = my_string.replace('}"', '"}')
myDict = json.loads(my_string)
pprint
myDict
结果:

{'chain_offside_6': '0',
 'chain_offside_7': '0',
 'chain_offside_8': '0',
 'chain_opencore_6': '0',
 'chain_opencore_7': '0',
 'chain_opencore_8': '0',
 'chain_xtime8': {'X0': '8', 'X1': '3', 'X2': '11'},
 'fan1': '0',
 'fan2': '0',
 'fan_num': '2'}
还有一个例子-

print(myDict['chain_xtime8']['X0'])
>> 8

这是一种标准的命名格式吗?可能存在一个现有的解析器。据我所知,它不是一个标准的解析器。这里有一个正则表达式,似乎工作正常-您可以迭代匹配项/组:(单击左侧的“代码生成器”,查看python示例代码)因此,如果逗号在括号内,您不想拆分。这是一种标准的命名格式吗?可能存在一个现有的解析器。据我所知,它不是一个标准的解析器。这里有一个正则表达式,它似乎工作正常-您可以遍历匹配项/组:(单击左侧的“代码生成器”获取python示例代码)所以,如果逗号在括号内,您不想拆分?如果数据包含带有这些特殊字符的字符串,这将损坏数据。虽然,我认为他的数据集没有,但我应该明确提到这一点。这是假设它们继续只使用整数作为其值。如果数据包含带有这些特殊字符的字符串,则会损坏数据。虽然,我认为他的数据集没有,但我应该明确提到这一点。这是假设它们继续只使用整数作为值