<p>因此,这里我尝试将字符串转换为JSON</p>
<p>但是为了让它起作用,我的str应该是JSON而不是别的</p>
<p>所以我找到了第一个<code>{</code>并从那里获取字符串</p>
<pre><code>import json
my_str = '''
First-tags :
{
"tag1": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
},
"tag2": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
}
}
'''
# find the first {
i = my_str.index('{')
my_str = my_str[i:] # trim the string so that only dict is left
my_dict = dict(json.loads(my_str)) # create JSON and then convert that to dict
print(my_dict) # n'joy
</code></pre>
<p>如果需要,还可以查找JSON的结尾并修剪str(查找<code>}</code>)</p>
<h2>根据问题中的更新更新解决方案更新</h2>
<pre><code>import json
my_str = '''
###Some Comment
First-tags :
{
"tag1": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
},
"tag2": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
}
}
###2nd Comment
Second-tags :
{
"tag1": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
},
"tag2": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
}
}
###Some other Comment
someother-tags :
{
"tag1": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
},
"tag2": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
}
}
'''
data = []
bal = 0
start = end = 0
for i,v in enumerate(my_str):
if v == '{':
if bal == 0:
start = i
bal+=1
elif v=='}':
bal-=1
end = i
if start!=end and bal ==0: # just looking for data in {....}
new_str = my_str[start:end+1]
print(new_str)
my_dict = dict(json.loads(new_str))
data .append(my_dict)
start = end = i+1
print(data) # n'joy
</code></pre>
<pre><code>[{'tag1': {'tagKey1': 'tagValue1', 'tagKey2': 'tagValue2'}, 'tag2': {'tagKey1': 'tagValue1', 'tagKey2': 'tagValue2'}}, {'tag1': {'tagKey1': 'tagValue1', 'tagKey2': 'tagValue2'}, 'tag2': {'tagKey1': 'tagValue1', 'tagKey2': 'tagValue2'}}, {'tag1': {'tagKey1': 'tagValue1', 'tagKey2': 'tagValue2'}, 'tag2': {'tagKey1': 'tagValue1', 'tagKey2': 'tagValue2'}}]
</code></pre>