格式化字符串时,我的字符串可能包含我不希望转换的模数"%"
。作为变通办法,我可以转义字符串并将每个"%"
更改为"%%"
。
例如,
'Day old bread, 50%% sale %s' % 'today!'
输出:
'Day old bread, 50% sale today'
但是,除了逃走之外,还有其他选择吗?我希望使用字典可以让Python忽略任何非关键字转换。
例如,
'Day old bread, 50% sale %(when)s' % {'when': 'today'}
但是Python仍然看到第一个模数%
,并给出了一个:
TypeError: not enough arguments for format string
发布于 2010-05-17 07:36:40
您可以(也应该)使用new string .format()
method (如果您使用的是Python2.6或更高版本):
"Day old bread, 50% sale {0}".format("today")
文档还说,旧的%
格式最终将从语言中删除,尽管这肯定需要一些时间。新的格式化方法更加强大,所以这是一件好事。
发布于 2010-05-17 07:32:17
并非如此-转义%符号是使用字符串格式所付出的代价。您可以改为使用字符串连接:'Day old bread, 50% sale ' + whichday
,如果这有帮助的话...
发布于 2010-05-17 07:35:38
将'%‘转义为'%%’不是一种解决办法。如果你使用字符串格式,这就是表示'%‘符号的方式。如果你不想这样做,你可以这样做:
print "Day old bread, 50% sale " + "today"
例如,不使用格式化。
请注意,当使用字符串连接时,请确保变量是字符串(而不是None)或使用str(varName)
。否则你会得到类似“Can‘t concatenate str and NoneType’这样的错误。”
https://stackoverflow.com/questions/2847272
复制相似问题