【问题标题】:Default substituting %s in python scripts在 python 脚本中默认替换 %s
【发布时间】:2011-05-10 17:54:58
【问题描述】:

有时在 Python 脚本中我会看到如下行:

cmd = "%s/%s_tb -cm cond+line+fsm -ucli -do \"%s\""

上面那行中的%s 在哪里被替换了? Python 是否有一些字符串堆栈并弹出它们并替换 %s

【问题讨论】:

  • "是否 python 有一些字符串堆栈并弹出它们并替换 %s?"不可以。您需要找到一条带有cmd % 的行。请在您的问题中也包含这一点。

标签: python string substitution


【解决方案1】:

这将在稍后用于:

print cmd % ('foo','boo','bar')

您所看到的只是一个字符串赋值,其中包含稍后将填写的字段。

【讨论】:

  • 好的,谢谢!这正是正在发生的事情。它稍后在另一行中填充。我擅长 PERL,所以我认为它必须在那里填充。非常感谢您的回答
【解决方案2】:

python字符串格式化基础

不是对你的代码行的具体答案,但既然你说你是 python 新手,我想我会用这个作为例子来分享一些快乐;)

内联列表的简单示例:

>>> print '%s %s %s'%('python','is','fun')
python is fun

使用字典的简单示例:

>>> print '%(language)s has %(number)03d quote types.' % \  
...       {"language": "Python", "number": 2}
Python has 002 quote types

如有疑问,请查看 python 官方文档 - http://docs.python.org/library/stdtypes.html#string-formatting

【讨论】:

  • 呃。这能回答他的问题吗?他想知道如何在其中包含%s 的字符串而不同时指定替换
  • 不是直接的,我更多的是解决他对 Python 新手的说法。有时,一些关于为什么某事以它的方式工作的信息可能会有所帮助!干杯。
  • 您的脚本中有错误。从打印或参数中删除 is。现在它会输出:'python is fun'。
  • 它回答了我的问题。我认为变量值必须像 perl 一样在那里指定。但这是不同的。在我的脚本中,他们在不同的行中有类似的内容,我没有注意到。 cmd = cmd % (self.agent.tmp_dir, arch_id, "%s.do" % self.agent.get_script(test.get_name())) 非常感谢您的回答。我在不到 5 分钟的时间内得到了 3 个答案。非常感谢
【解决方案3】:

它被用于字符串插值。 %s 被字符串替换。您使用模运算符 (%) 进行字符串插值。字符串将在左侧,用于替换各种%s 的值在右侧,在一个元组中。

>>> s = '%s and %s'

>>> s % ('cats', 'dogs' )
<<< 'cats and dogs'

如果你只有一个字符,你可以忘记元组。

>>> s = '%s!!!'

>>> s % 'what'
<<< 'what!!!'

在较新版本的python中,推荐的方法是使用字符串类型的format方法:

>>> '{0} {1}'.format('Hey', 'Hey')
<<< 'Hey Hey'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2020-03-28
    • 2013-12-12
    • 1970-01-01
    • 2017-02-12
    相关资源
    最近更新 更多