我想知道给定格式字符串所需的参数数量。例如,"%s is my name, and %s is my hair color"
需要两个参数。我可以找到%
在字符串中显示的次数,但如果我真的想在我的字符串中使用%
并且%%
表示这一点。它似乎也不优雅。还有更好的方法吗?
答案 0 :(得分:2)
我能想到的最简单的方法是:
my_string = "%s is my name, and %s is my hair color"
my_string.count('%') - 2 * my_string.count('%%')
答案 1 :(得分:0)
好吧,你可以使用formatter对象,因为这需要这个函数用于自己的格式化目的。但是你必须改变占位符。
import string
fmt = string.Formatter()
my_string = "Hello, {0:s} is my name and {1:s} is my hair color. I have 30% blue eyes"
parts = fmt.parse(my_string)
print list(parts)
这给出了:
[('Hello, ', '0', 's', None), (' is my name and ', '1', 's', None), (' is my hair color. I have 30% blue eyes', None, None, None)]
现在需要过滤掉正确的部分,即每个元组中的第3个项目都不是None。
所有东西都可以改成像这样的单线:
len([p for p in fmt.parse(my_string) if p[2] is not None]) # == 2
答案 2 :(得分:-1)
效率不高 - 并不完全严重:) ...
for n in xrange(10, -1, -1):
try:
s % (('',)*n)
except TypeError:
continue
print n
break