根据以下内容,有很多条目:" TypeError:并非在字符串格式化期间转换所有参数"但我没有找到原因,为什么会这样:
print("File: %30s "%("name"))
正在运作,但不是这样:
leng=30
print("File: %"+ str(leng) +"s "%("name"))
答案 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-string
s,您可以避免使用两级字符串就地替换;这是一个例子:
python3.6
对于>>> filename = "some name"
>>> print(f"File: {filename:-^{len(filename)+6}} ")
---some name---
的旧版本,其他答案适用。
答案 3 :(得分:-1)
相反,你可以做到
print("File: {:.30}".format(name))
其中name是预定义的文件名