步骤/目录:
无

本文首发于个人博客https://lisper517.top/index.php/archives/4232/,转载请注明出处。
本文的原文写作日期为2020年9月5日。
本文的目的如标题所示。

看《笨方法学python第三版》的时候习题46,想写一个python脚本自动在当前目录下创建项目骨架。

其中需要将一些内容写入一个文件,需要用到format方法,但出现了一个问题。简化版的问题代码如下:

project_name = 'test'
setup_config = '''
config = {
    'description': '{0}',
    'author': 'Author Name',
}
'''.format(project_name)
print(setup_config)

运行时出现异常:
KeyError: "\n 'description'"
KeyError是查找字典中的键时键不存在返回的错误。作为替代方法,我暂时先用了%格式化输出:

project_name = 'test'
setup_config = '''
config = {
    'description': '%s',
    'author': 'Author Name',
}
''' % project_name
print(setup_config)

可以正常运行 。

我想到了在format中用{{}}来输出{}的问题,多试几次,发现:

project_name = 'test'
setup_config = '''
config = {{
    'description': '{0}',
    'author': 'Author Name',
}}
'''.format(project_name)
print(setup_config)

就可以正常运行,但第一段的代码中{0}是高亮显示的。

我猜测可能是format方法中,误以为:

{
    'description': '{0}

{到:这之间的内容是键,: 后面的是指定格式,但我没有给出键,因为想使用0作为键。由于我使用的vs code高亮了{0},可能解释器和编辑器的理解不一样。

总结:要用format方法输出{},不论出现在字符串的哪里,都应该使用双括号来替代{},才可以正确识别。

标签: none

添加新评论