如何在字典中正确显示长字符串?

How to properly show a long string in a dictionary?

请看下面的字符串。我正在使用 lmfit 进行一些拟合,然后使用 yaml 将结果保存到字典中。我得到以下由 lmfit 结果生成的字符串:

"[[Fit Statistics]]\n    # fitting method   = leastsq\n    # function\
    \ evals   = 4\n    # data points      = 70\n    # variables        = 2\n    chi-square\
    \         = 5.5122e+09\n    reduced chi-square = 81062428.0\n    Akaike info crit\
    \   = 1276.72198\n    Bayesian info crit = 1281.21897\n[[Variables]]\n    Amplitude:\
    \       12.6121224 +/- 0.24761617 (1.96%) (init = 12.61212)\n    Radius:     \
    \     41.0677874 +/- 0.11681467 (0.28%) (init = 41.06779)\n    Polydispersity:\
    \  0.05 (fixed)\n    Background:      1e-05 (fixed)\n    Roughness:       0 (fixed)\n\
    [[Correlations]] (unreported correlations are < 0.100)\n    C(Amplitude, Radius)\
    \ = -0.446" 

最好的呈现方式是什么? (例如:\n 似乎不起作用)

有一个包叫 pprint。如果我没记错的话,它应该是 Python 标准库的一部分。以下是文档的 link。 https://docs.python.org/3/library/pprint.html

如果您只是想从美学上“呈现”这个以供您自己观察,试试这个:

ls=string.split("\n") print(ls)

如果您想从字符串中实际解析它或将其用于其他目的,而不是查看将生成的列表转换为元组或字典。 您可以这样做:

`def Convert(tup, di): 
     for a, b in tup: 
        di.setdefault(a, []).append(b) 
    return di`


`ls=string.split("\n")
 ls2=[]
 d={}
 for x in ls:
    if '=' in x:
        (a,b) = x.split("=")
        ls2.append((a,b))
    elif ':' in x:
        (a,b) = x.split(":")
        ls2.append((a,b))
(Convert(ls2, d)) `