看 笨方法学python第三版 的时候习题46,想写一个python脚本自动在当前目录下创建项目骨架。详见
https://blog.csdn.net/m0_46287920/article/details/108411841添加链接描述
其中需要将一些内容写入一个文件,需要用到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方法输出{},不论出现在字符串的哪里,都应该使用双括号来替代{},才可以正确识别。