3 votes

En utilisant python, comment remplacer les guillemets simples par des guillemets doubles ?

Je donnais l'entrée entre guillemets, après le traitement de certaines opérations, j'ai besoin d'afficher la sortie entre guillemets alors qu'elle est donnée entre guillemets.

code :

def movie_data(movie_list):
    mve = {}
    for k, v in movie_list.items():
        if type(v) == str:
            mve[k] = str(v) if v else None
        elif type(v) == dict:
            mve[k] = movie_data(v)
        else:
            pass
    return mve
movie_list = {"name":"Marvel","movies": {"spiderman":"Tom","Thor":"Chris"},"Review":"5star"}
movie_data(movie_list)

Sortie :

{'name': 'Marvel', 'movies': {'spiderman': 'Tom', 'Thor': 'Chris'}, 'Review': '5star'}

Résultats attendus :

{"name":"Marvel","movies": {"spiderman":"Tom","Thor":"Chris"},"Review":"5star"}

4voto

Si vous imprimez un dictionnaire, il utilisera la méthode du dictionnaire __str__ pour convertir le dictionnaire en une chaîne imprimable. Le site __str__ est celle qui utilise des guillemets simples.

movie_list = {"name":"Marvel","movies": {"spiderman":"Tom","Thor":"Chris"},"Review":"5star"}
print(movie_list.__str__())

Ce que vous pouvez faire pour obtenir des guillemets doubles est de :

  1. obtenir la chaîne qui sera imprimée
  2. remplacer les guillemets doubles par des guillemets simples

Voici le code pour le faire :

movie_list = {"name":"Marvel","movies": {"spiderman":"Tom","Thor":"Chris"},"Review":"5star"}
movie_list_str = movie_list.__str__().replace("'", '"')
print(movie_list_str)

Et le résultat est :

{"name": "Marvel", "movies": {"spiderman": "Tom", "Thor": "Chris"}, "Review": "5star"}

2voto

user1717828 Points 1377

Je ne suis pas sûr de vos motivations, mais la seule fois où j'ai besoin de cela, c'est lorsque je veux que mon dictionnaire soit copiable/pastable pour les fichiers JSON. Il s'avère que le json Il se trouve que le module fait les deux dans votre cas :

import json                                                                     

def movie_data(movie_list):                                                     
    mve = {}                                                                    
    for k, v in movie_list.items():                                             
        if type(v) == str:                                                      
            mve[k] = str(v) if v else None                                      
        elif type(v) == dict:                                                   
            mve[k] = movie_data(v)                                              
        else:                                                                   
            pass                                                                
    return mve                                                                  

movie_list = {                                                                  
    "name": "Marvel",                                                           
    "movies": {"spiderman": "Tom", "Thor": "Chris"},                            
    "Review": "5star",                                                          
}                                                                               
print(json.dumps(movie_data(movie_list)))                                       

# {"name": "Marvel", "movies": {"spiderman": "Tom", "Thor": "Chris"}, "Review": "5star"}

2voto

span Points 33

Essayez d'utiliser json paquet.

import json
a = movie_data(movie_list)
print(json.dumps(a))

0voto

qkzk Points 195

Python utilise les guillemets simples ou doubles pour les chaînes de caractères : "abc" == 'abc' .

Par défaut, print affichera des guillemets simples, à moins que la chaîne ne contienne déjà des guillemets :

>>> "123"
'123'
>>> d = {'a': "b"}
>>> print(d)
{'a': 'b'}
>>> d
{'a': 'b'}

Donc ces sorties sont égales. La différence vient de la fonction print de Python.

>>> a = {'name': 'Marvel', 'movies': {'spiderman': 'Tom', 'Thor': 'Chris'}, 'Review': '5star'}
>>> b = {"name":"Marvel","movies": {"spiderman":"Tom","Thor":"Chris"},"Review":"5star"}
>>> a == b
True

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X