我是Python的新手。我试图将公式插入excel列。公式的输入不一定来自一行。我有 -
formula= '=B4-(28.471-0.0146*B4+0.0008*B4^2)+D2'
formulaRegex= re.compile(r'([A-Z]+)(\d{1,})')
cellCoordinatesR= formulaRegex.findall(formula) #find a Cap. Letter and a number
rowIndex=[] #list of the row indexes i.e '4' in 'B4' and '2' in 'D2'
for group in cellCoordinatesR:
rowIndex.append(group[1])
rowIndexFormat= '('+','.join(rowIndex)+')' # add parenthesis to rowIndex list
'(4,4,4,2)'
newFormula= formulaRegex.sub(r'\1%d',formula) %rowIndexFormat
错误:
'%d格式:需要一个数字,而不是str'
我想要的是什么:
newFormula= formulaRegex.sub(r'\1%d',formula) %(4,4,4,2)
我现在有什么:
newFormula= formulaRegex.sub(r'\1%d',formula) %'(4,4,4,2)'
我找到了一个方法:
newFormula= formulaRegex.sub(r'\1%d',formula) %
(int(rowIndex[0]),int(rowIndex[1]), int(rowIndex[2]), int(rowIndex[3]))
'=B4-(28.471-0.0146*B4+0.0008*B4^2)+D2'
但它要求我根据需要多次int(rowIndex[i])
。我怎样才能%d
以这种方式让我不必多次输入int(rowIndex[i])
?
答案 0 :(得分:1)
您可以将int
应用于序列中的项目,而不是一次一个。
... % tuple(int(i) for i in rowIndex)
但是,鉴于问题是您在字符串中有整数,为什么不使用%s
占位符而不是%d
将它们插入为字符串?