【问题标题】:Using python, How to replace single quotes to double quotes使用python,如何将单引号替换为双引号
【发布时间】:2022-01-08 13:56:48
【问题描述】:

我用双引号给出输入,在处理一些操作后需要用双引号显示输出,而它以单引号格式给出

代码:

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)

输出:

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

预期输出:

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

【问题讨论】:

  • 字典中没有引号。这就是 Python 打印字符串的方式。
  • 单引号和双引号在 Python 中是等价的,为什么在打印字典时使用哪个很重要?
  • 如果您尝试创建 JSON,请使用 json 模块。

标签: python python-3.x dictionary


【解决方案1】:

我不确定你的动机是什么,但我唯一想要的是当我希望我的字典可以复制/粘贴 JSON 文件时。事实证明,json 模块恰好在你的情况下两者兼而有之:

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"}

【讨论】:

    【解决方案2】:

    尝试使用json 包。

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

    【讨论】:

      【解决方案3】:

      如果您打印字典,它将使用字典方法__str__ 将字典转换为可打印字符串。 __str__ 方法是使用单引号的方法。

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

      获得双引号的方法是:

      1. 获取要打印的字符串
      2. 用单引号代替双引号

      这是执行此操作的代码:

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

      输出是:

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

      【讨论】:

      • 这非常整洁。感谢您的贡献!
      【解决方案4】:

      Python 对字符串使用单引号或双引号:"abc" == 'abc'

      默认情况下,print 将显示单引号,除非字符串已经包含引号:

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

      所以这些输出是相等的。区别在于 Python 的 print 函数。

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

      【讨论】:

        猜你喜欢
        • 2018-11-18
        • 1970-01-01
        • 2017-12-29
        • 1970-01-01
        • 2012-01-01
        • 1970-01-01
        • 2011-01-26
        • 1970-01-01
        相关资源
        最近更新 更多