Python 3中的字符串替换?

我正在尝试这样做:

subs='world'
“你好{[subs]}”

在Python3中

我不太明白语法(来自Ruby/PHP)。我错过什么了吗?我认为文档中的%运算符已被Python2.x弃用

您有两个格式设置选项:

  • 使用C-printf样式格式字符串的旧python2样式%运算符
  • 字符串的新python3样式format()方法。由于后移植,您可以在python2和python3中使用此选项
  • 甚至更新的Python3.6+f-strings没有后端口到python2:它们允许您在字符串文本中指定表达式

接受C-printf样式格式字符串的%格式化程序:

“你好%s”%subs
“您好%s%s”%(潜艇,”。)
my_dict={'placeholder_name':'world','period':'.}
“您好%(占位符名称)s%(句点)s”%my\u dict

请注意,在python中,%s格式说明符接受任何类型的对象(整数、类实例等)作为输入,并使用非常方便的str()运算符将其转换为字符串。对可替换输入对象调用repr()%r也是如此。只有当您想进行特定于类型(例如:float)的格式参数化(例如%.5f)时,才需要其他格式说明符,如%f

format()方法:

“Hello{}”。格式(subs)
“Hello{placeholder\u name}”。格式(placeholder\u name=subs)

当然,placeholder\u name也可以是subs,我只是用了一个不同的名称来澄清问题。以下操作与上述解决方案类似:

“Hello{subs}”。格式(subs=subs)

在python中,位置参数还可以从列表或元组传递到函数调用,如果您想利用该语言的更多动态功能,关键字参数也可以从字典传递:

my_tuple=('world','
“Hello{}{}”。格式(*my_tuple)
my_dict={'subs':'world','period':'.}
“你好{subs}{period}”。格式(**my_dict)

我们可以通过参数化格式字符串使事情变得复杂,更多信息,请查看文档中的format()方法

如果要替换多个内容,那么我强烈建议使用命名占位符(带有format())的关键字args),而不是摆弄参数索引,因为它通常会使代码更易于阅读。如果有多种东西可以替代,那么它也可以减少bug的发生

python 3.6+f字符串:

&gt&燃气轮机&燃气轮机;x=5
&燃气轮机&燃气轮机&燃气轮机;y=6
&燃气轮机&燃气轮机&燃气轮机;f'woof{x*y}meow'
“汪汪30喵”

发表评论