【问题标题】:How can I create python strings with placeholders with arbitrary number of elements如何使用具有任意数量元素的占位符创建 python 字符串
【发布时间】:2011-03-28 23:44:39
【问题描述】:

我可以的

string="%s"*3
print string %(var1,var2,var3)

但我无法将变量放入另一个变量中,以便我可以使用应用程序逻辑动态创建变量列表。 例如

if condition:
  add a new %s to string variable
  vars.append(newvar)

else:
  remove one %s from string
  vars.pop()
print string with placeholders

关于如何使用 python 2.6 做到这一点的任何想法?

【问题讨论】:

  • 这看起来非常复杂。为什么要构建一个大格式字符串和一个大值列表?为什么不将格式应用于值并将其附加到结果中?请显示更多您认为需要此内容的上下文。听起来一切都可以简化。
  • 我不完全确定您要在这里完成什么,但我会尝试回答。

标签: python placeholder


【解决方案1】:

这个怎么样?

print ("%s" * len(vars)) % tuple(vars)

真的,这是一种相当愚蠢的做事方式。如果您只想将所有变量压缩到一个大字符串中,这可能是一个更好的主意:

print ''.join(str(x) for x in vars)

这至少需要 Python 2.4 才能工作。

【讨论】:

    【解决方案2】:

    在打印之前使用列表添加/删除字符串然后 "".join(yourlist)

    >>> q = []
    >>> for x in range(3):
        q.append("%s")
    >>> "".join(q)
    '%s%s%s'
    >>> print "".join(q) % ("a","b","c")
    abc
    

    【讨论】:

    • 绝对同意——不要这样做!但是,如果出于某种原因您真的希望能够从字符串中 remove 格式(呃!),那么这似乎是最简单的方法。如果可能的话,最好避免这种情况。
    【解决方案3】:
    n = 0
    if condition:
      increment n
      vars.append(newvar)
    
    else:
      decrement n
      vars.pop()
    
    string = "%s" * n
    print string with placeholders
    

    但如果你只是加入 vars,你并不真的需要字符串格式化;为什么不这样做:

    "".join( map( str, vars ) )
    

    【讨论】:

      猜你喜欢
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 2018-04-14
      • 2017-04-25
      相关资源
      最近更新 更多