Как правильно показать длинную строку в словаре? - PullRequest
0 голосов
/ 10 апреля 2020

Пожалуйста, смотрите строку ниже. Я использую 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 не работает)

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

, если вы просто хотите «представить» это эстетически для своих собственных наблюдений, попробуйте это:

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)) ` 

Надеюсь, это поможет!

1 голос
/ 10 апреля 2020

Существует пакет под названием pprint. Если я не ошибаюсь, он должен быть частью стандартной библиотеки Python. Ниже ссылка на документацию. https://docs.python.org/3/library/pprint.html

Удачного кодирования! Берегите себя!

...