将带括号的字符串转换为整数%d格式:需要一个数字,而不是str'

时间:2017-10-23 17:28:28

标签: python openpyxl

我是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])

1 个答案:

答案 0 :(得分:1)

您可以将int应用于序列中的项目,而不是一次一个。

... % tuple(int(i) for i in rowIndex)

但是,鉴于问题是您在字符串中有整数,为什么不使用%s占位符而不是%d将它们插入为字符串?