2017-03-03 2 views
0

Je lis ce texte à partir d'un fichier CSV en Python.Enregistrement d'une variable python avec de nouvelles lignes dans JSON avec joli print

Hi there, 



This is a test. 

et de le stocker dans une variable text.

Je suis en train d'écrire cette variable dans un fichier JSON avec json.dump(), mais il se transforme en:

'\ ufeffHi il, \ n \ n \ xa0 \ n \ nLa est un tester.

Comment puis-je faire mon fichier JSON ressembler à celui ci-dessous ?:

{ 
    "text": "Hi there, 



    This is a test." 
} 
+1

non valide JSON – depperm

Répondre

2

JSON ne permet pas de sauts de ligne réels. Si vous voulez toujours les utiliser, vous devrez créer votre propre script "json".

Edit: Voici la fonction qui prendra python dict (que vous pouvez obtenir en utilisant json.loads()) et l'imprimer la façon dont vous avez besoin:

def print_wrong_json(dict_object): 
    print '{' 
    print ',\n'.join(['"{}": "{}"'.format(key, dict_object[key]) for key in dict_object]) 
    print '}' 
+0

amour totalement que le nom de la fonction. 3 – Takiro

2

Eh bien, il peut être fait, comme user1308345 shows in his answer mais it wouldn't be valid JSON anymore et que vous exécutez probablement dans les problèmes plus tard, lors de la désérialisation du JSON.

Mais si vous voulez vraiment le faire, et que vous voulez toujours avoir JSON valide, vous pouvez diviser la chaîne (et supprimer les nouvelles lignes) et sérialisation comme un tableau comme suggéré dans cette réponse https://stackoverflow.com/a/7744658/1466757

Ensuite, votre JSON ressemblerait à ce

{ 
"text": [ 
    "Hi there,", 
    "", 
    "", 
    "", 
    "this is a test." 
    ] 
} 

Après désérialisation, vous devrez mettre la ligne brise avant.