如何 return %u 字符串中的整数?

How to return an integer in a %u string?

我正在 Python 中实现代码,但我不得不使用以前实现的代码。我在使用继承代码时遇到问题,无法在 HTML.

中显示整数
out.append(
   """<td align="right">%u us</td><td align="right">%u us</td><td align="right">%u us</td><td align="right"><a style="cursor:default" title="average block size: %u B">%u</a></td><td align="right"><a style="cursor:default" title="average block size: %u B">%u</a></td><td align="right">%u</td>"""
   % (rtime,wtime,fsynctime,rbsize,rops,wbsize,wops,fsyncops,)
)

这段代码给我这个错误:

Traceback (most recent call last):
File ".../disks_tab.py", line 652, in disks
fsyncops,
TypeError: %u format: a number is required, not str

我试过像这样强制 var 类型:

if fsyncops == "-":
   fsyncops = 0

在 out.append... 代码的正上方。字符串“-”是变量实际存储的内容。

它仍然不工作,我得到同样的错误。

%运算符改为format()方法,并使用{}占位符。这不需要相应的参数是特定类型,它将使用其 __str__ 运算符对其进行格式化。

out.append(
   """<td align="right">{} us</td><td align="right">{} us</td><td align="right">{} us</td><td align="right"><a style="cursor:default" title="average block size: {} B">{}</a></td><td align="right"><a style="cursor:default" title="average block size: {} B">{}</a></td><td align="right">{}</td>""".format(
    rtime,wtime,fsynctime,rbsize,rops,wbsize,wops,fsyncops)

或将所有 %u 运算符更改为 %s

您会尝试将变量转换为预期类型(在您的情况下为 int)。这样你就不需要弄乱你的遗留代码。

#!/usr/bin/env python3

fsyncops = "-"

try:
  fsyncops = int(fsyncops)
except:
  fsyncops = 0

print ( """%u""" % (fsyncops,) )