给定class CustomRenderer extends XYLineAndShapeRenderer {
@Override
public void drawItem(Graphics2D g2, XYItemRendererState state, Rectangle2D dataArea, PlotRenderingInfo info, XYPlot plot, ValueAxis domainAxis, ValueAxis rangeAxis, XYDataset dataset, int series, int item, CrosshairState crosshairState, int pass) {
if (item % 160 == 0) {
super.drawItem(g2, state, dataArea, info, plot, domainAxis, rangeAxis, dataset, series, item, crosshairState, pass);
} else {
//none
}
}
}
这样的数字我想输出12345678910
。
我试过了:
number id 123.456.789-10
但结果是print('number id {0:1.3}.{0:1.3}.{0:1.3}-{0:1.3}'.format("12345678910"))
。如何正确地做到这一点?
答案 0 :(得分:0)
这是实现您的目标的一种方式:
number = "12345678910"
print(
'number id {0}.{1}.{2}-{3}'.format(
*[number[i:i+3] for i in range(0,len(number), 3)]
)
)
#number id 123.456.789-10.
您的代码存在一些问题。首先,"{0...}"
中的第一个数字指的是format()
函数中的位置参数。在您的情况下,您使用的是仅引用第一个参数的所有0
。这就是为什么相同的子串被反复重复的原因。 (注意我是如何将其更改为{0}.{1}...{3}
。)
我正在将*[number[i:i+3] for i in range(0,len(number), 3)]
传递给格式函数,该函数只会将您的字符串分成3个块。
print([number[i:i+3] for i in range(0,len(number), 3)])
#['123', '456', '789', '10']
*
运算符执行argument unpacking,它将列表元素传递给format()
。
<强>更新强>:
作为@ user2357112 mentioned in the comments,在这种情况下,您实际上并不需要任何内部任何内容。只需使用{}
来表示占位符。
print(
'number id {}.{}.{}-{}'.format(
*[number[i:i+3] for i in range(0,len(number), 3)]
)
)