数我想知道对于给定的格式字符串所需参数的个数。例如,"%s is my name, and %s is my hair color"
将有两个参数需要。我可以找到的次数%
字符串中显示出来,但如果我真的想在我的字符串%
,它有%%
,以表明这是行不通的。它也看起来并不高雅。有没有更好的办法?参数字符串格式设置
回答
我能想出的最简单的方法是这样的:
@PadraicCunningham:'ValueError:格式不完整,为您的早期版本。 :)希望OP只想测试有效的格式字符串。 –
@PadraicCunningham:这是一个有效的_string_,但我不明白它是一个有效的_format string_。正如我所说的,当我尝试使用“%s是我的名字,%s是我的头发颜色%%%”作为格式字符串(在Python 2.6.6上)时,我得到了'ValueError:incomplete format'。 –
@ PM2Ring,也不必在字符串中任何格式'my_string = 100%'是有效的,并返回计数1,你是说每一个字符串必须有它的格式? –
不完全是有效的 - 而不是完全严重:) ...
for n in xrange(10, -1, -1):
try:
s % (('',)*n)
except TypeError:
continue
print n
break
好啊,-1为轻浮。为我服务的权利。 –
如果它的任何安慰,我认为做这样的事情太多,除了它仅适用于接受字符串ARGS像'%s'或'%r',而不是数字格式,如'%D','%F'或格式'%g'。 –
好点 - 使用0而不是''会更好(数字被强制为字符串,但反之亦然)。 –
嗯,你可以使用格式化对象为此,因为这需要它自己的格式化功能。但是你必须改变你的占位符。
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)]
现在是筛选合适的零件出,即凡在每个元组中的第三个项目是不是无的问题。
一切都可以改变一个班轮这样的:
len([p for p in fmt.parse(my_string) if p[2] is not None]) # == 2
当然,但这并没有真正回答OP的问题,这个问题特别针对基于旧式''''格式的字符串。 –
他没有指明他与旧式和低级字符串格式相关。他现在只使用它,但没有说它不能改变它。 – avanwieringen
我*希望看到旧式格式的类似解决方案。不过,我确实没有说明;而这*确实*介绍了我以前不知道的东西。 – zondo
- 1. 使用带参数的字符串格式设置onclick
- 2. 字符串格式自定义参数
- 3. 字符串自动格式参数
- 4. 字符串格式作为参数?
- 5. 长参数的字符串格式
- 6. 内置字符串格式与字符串连接作为日志参数
- 7. 格式不是字符串文字和格式参数
- 8. 设置DataMapper:查询字符串参数中的命令参数
- 9. 在C#多行逐字字符串中转义字符串格式的参数
- 10. 使用数字复合格式格式化数字字符串
- 11. Java String.format - 方法格式(字符串,对象[])不适用于参数格式(字符串,浮点数)
- 12. 格式字符串
- 13. 字符串格式
- 14. 字符串格式
- 15. 格式字符串
- 16. 设置字符串
- 17. 将查询字符串参数传递给DataNavigateUrl格式字符串
- 18. 关于字符串警告格式不是字符串文字,也没有格式参数
- 19. NSLocalizedString格式不是字符串文字,没有格式参数(Xcode中)
- 20. 警告:格式字符串不是一个字面,没有格式参数
- 21. 警告:格式字符串不是一个字面,没有格式参数
- 22. 获取错误“格式不是字符串文字和格式参数”
- 23. 弹簧配置字符串格式
- 24. 字符串&字符串的设置值
- 25. 错误:格式字符串未使用的数据参数
- 26. 无法将SQL参数值设置为字符串数组
- 27. 字符串格式符号
- 28. 格式字符串数字到货币
- 29. 使用字符串格式给出字符串值的格式
- 30. Crystal Report中动态参数的设置数字格式
使用'str.format'或正则表达式是我怎么能使用'str.format'找到的数量的唯一途径 –
需要参数? – zondo
我的意思是,你将不得不使用str.format从一开始去寻找占位符,有喜欢的Formatter.parse没有内置的方法,与旧式的格式,你需要自己解析它 –