【发布时间】:2018-01-10 18:59:55
【问题描述】:
以下代码报错:
filename='foo.txt'
sed_str = 'PROJECT_DIR=\$\{PROJECT_DIR:-{}\}'.format(filename)
print (sed_str)
结果:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-12-9ac4d7cde75e> in <module>()
1 filename='foo.txt'
----> 2 sed_str = 'PROJECT_DIR=\$\{PROJECT_DIR:-{}\}'.format(filename)
3 print (sed_str)
KeyError: 'PROJECT_DIR'
为什么我会看到 KeyError?
【问题讨论】:
-
{....}被解释为格式说明符。 -
摆脱你的大括号:
's#PROJECT_DIR=\$\{{PROJECT_DIR:-.*\}}#PROJECT_DIR=\$\{{PROJECT_DIR:-{0}\}}'.format('filename') -
f-strings 可能会使您的字符串构建更具可读性:python.org/dev/peps/pep-0498
-
是的。他们在之前的调试尝试中丢失了。
-
顺便说一句。我不同意这是重复的。是的,另一个链接提供了回答问题所需的信息,但该答案与字典或关键错误无关。所以这是一个特例,但没有重复。我无法使用呈现给我的错误消息找到其他答案。同样,不是重复的,因为无法通过此错误消息路径找到信息。
标签: python string python-3.x