首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >字符串包含"%s“而不进行转义时的Python字符串格式

字符串包含"%s“而不进行转义时的Python字符串格式
EN

Stack Overflow用户
提问于 2010-05-17 15:27:53
回答 3查看 23.3K关注 0票数 17

格式化字符串时,我的字符串可能包含我不希望转换的模数"%"。作为变通办法,我可以转义字符串并将每个"%"更改为"%%"

例如,

'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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-17 15:36:40

您可以(也应该)使用new string .format() method (如果您使用的是Python2.6或更高版本):

"Day old bread, 50% sale {0}".format("today")

The manual can be found here

文档还说,旧的%格式最终将从语言中删除,尽管这肯定需要一些时间。新的格式化方法更加强大,所以这是一件好事。

票数 24
EN

Stack Overflow用户

发布于 2010-05-17 15:32:17

并非如此-转义%符号是使用字符串格式所付出的代价。您可以改为使用字符串连接:'Day old bread, 50% sale ' + whichday,如果这有帮助的话...

票数 2
EN

Stack Overflow用户

发布于 2010-05-17 15:35:38

将'%‘转义为'%%’不是一种解决办法。如果你使用字符串格式,这就是表示'%‘符号的方式。如果你不想这样做,你可以这样做:

print "Day old bread, 50% sale " + "today"

例如,不使用格式化。

请注意,当使用字符串连接时,请确保变量是字符串(而不是None)或使用str(varName)。否则你会得到类似“Can‘t concatenate str and NoneType’这样的错误。”

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2847272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档