在 Python 中使用多个 %s 格式化输出名称
Use multiple %s for formating output names in Python
我想在嵌套循环中动态创建多个文件名,比方说,对于 2 个参与者,每个参与者都有不同的 4 个会话。我的目标是创建如下文件名:
- Learning_S1_P1.xlsx; Learning_S2_P1.xlsx; Learning_S3_P1.xlsx; Learning_S4_P1.xlsx
- Learning_S1_P2.xlsx; ... Learning_S4_P2.xlsx
我的代码是:
filename = {}
for y in range(0,4):
for i in range(0,2):
filename[y][i] = 'Learning_S%s_P%s.xlsx' % (1+y,1+i)
但是,我收到 KeyError: 0。我被阻止了,找不到解决方案。任何帮助将不胜感激。
非常感谢,
此问题与您的字符串格式无关。当你试图在你的字典中设置项目时,错误就来了。那是因为你试图在嵌套字典中设置项目,而没有创建内部字典:filename[y]
不存在,所以你不能做 filename[y][i]
.
您可以通过在外循环中创建字典来解决此问题:
filename = {}
for y in range(0,4):
filename[y] = {}
for i in range(0,2):
filename[y][i] = 'Learning_S%s_P%s.xlsx' % (1+y,1+i)
虽然我会质疑字典是否是正确的数据结构:似乎嵌套列表更合适:
filename = []
for y in range(0,4):
inner = []
for i in range(0,2):
inner.append('Learning_S%s_P%s.xlsx' % (1+y,1+i))
filename.append(inner)
与字符串无关。
你得到 KeyError 因为你写
filename[y][i]
写
filename[y] = {}
filename[y][i] = 'whatever'
(您可以使用 format() 而不是 %s 语法。)
建议:遇到这种问题时,尽量把一行语句分开。
这一行本身就可以:
filename[y][i] = 'Learning_S%s_P%s.xlsx' % (1+y,1+i)
但是当它引发异常时,将其一分为二:
value = 'Learning_S%s_P%s.xlsx' % (1+y,1+i)
filename[y][i] = value
很明显错误是由第二行引发的,与字符串无关。
我想在嵌套循环中动态创建多个文件名,比方说,对于 2 个参与者,每个参与者都有不同的 4 个会话。我的目标是创建如下文件名:
- Learning_S1_P1.xlsx; Learning_S2_P1.xlsx; Learning_S3_P1.xlsx; Learning_S4_P1.xlsx
- Learning_S1_P2.xlsx; ... Learning_S4_P2.xlsx
我的代码是:
filename = {}
for y in range(0,4):
for i in range(0,2):
filename[y][i] = 'Learning_S%s_P%s.xlsx' % (1+y,1+i)
但是,我收到 KeyError: 0。我被阻止了,找不到解决方案。任何帮助将不胜感激。
非常感谢,
此问题与您的字符串格式无关。当你试图在你的字典中设置项目时,错误就来了。那是因为你试图在嵌套字典中设置项目,而没有创建内部字典:filename[y]
不存在,所以你不能做 filename[y][i]
.
您可以通过在外循环中创建字典来解决此问题:
filename = {}
for y in range(0,4):
filename[y] = {}
for i in range(0,2):
filename[y][i] = 'Learning_S%s_P%s.xlsx' % (1+y,1+i)
虽然我会质疑字典是否是正确的数据结构:似乎嵌套列表更合适:
filename = []
for y in range(0,4):
inner = []
for i in range(0,2):
inner.append('Learning_S%s_P%s.xlsx' % (1+y,1+i))
filename.append(inner)
与字符串无关。 你得到 KeyError 因为你写
filename[y][i]
写
filename[y] = {}
filename[y][i] = 'whatever'
(您可以使用 format() 而不是 %s 语法。)
建议:遇到这种问题时,尽量把一行语句分开。
这一行本身就可以:
filename[y][i] = 'Learning_S%s_P%s.xlsx' % (1+y,1+i)
但是当它引发异常时,将其一分为二:
value = 'Learning_S%s_P%s.xlsx' % (1+y,1+i)
filename[y][i] = value
很明显错误是由第二行引发的,与字符串无关。