python格式字符串TypeError:在字符串格式化期间不是所有参数都被转换

时间:2017-12-01 13:06:50

标签: python

根据以下内容,有很多条目:" TypeError:并非在字符串格式化期间转换所有参数"但我没有找到原因,为什么会这样:

print("File: %30s "%("name"))

正在运作,但不是这样:

leng=30
print("File: %"+ str(leng) +"s "%("name"))    

4 个答案:

答案 0 :(得分:5)

由于操作顺序,您的代码评估为:

"File: %" + str(leng) + ("s "%("name"))

要解决此问题,请将字符串括起来,如:

("File" + ...)%("name")

答案 1 :(得分:0)

后者仅将%应用于"s "。使用分组括号:

print(("File: %" + str(leng) + "s ") % "name")    

答案 2 :(得分:0)

与OP'请求并不真正相关,但使用dat[dat[,Reduce(`|`, lapply(.SD, function(x) substr(x, 1, 3) %chin% c('413', 'I20'))), .SDcols = 2:4]] # eid mc1 oc1 oc2 #1: 1 I20.1 350.0 K50.1 #2: 2 413.9 323.0 K51.4 #3: 5 345 413.1 #4: 9 345 345.0 I20.3 f-strings,您可以避免使用两级字符串就地替换;这是一个例子:

python3.6

对于>>> filename = "some name" >>> print(f"File: {filename:-^{len(filename)+6}} ") ---some name--- 的旧版本,其他答案适用。

答案 3 :(得分:-1)

相反,你可以做到

print("File: {:.30}".format(name))

其中name是预定义的文件名