任意の数の要素を持つプレースホルダーでPython文字列を作成するにはどうすればよいですか

StackOverflow https://stackoverflow.com/questions/3468916

  •  28-09-2019
  •  | 
  •  

質問

できます

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

しかし、APPロジックを使用してその場でVARSのリストを作成できるように、VARを別の変数にすることはできません。例えば

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でこれを行う方法に関するアイデアはありますか?

役に立ちましたか?

解決

これはどう?

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

本当に、それは物事を行うためのかなり馬鹿げた方法です。すべての変数を1つの大きな文字列で一緒につなぎたいだけなら、これはおそらくより良いアイデアです。

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

それには、少なくともPython 2.4が機能する必要があります。

他のヒント

リストを使用して文字列を追加/削除してから、印刷する前に "" .oin(yourlist)を削除します

>>> q = []
>>> for x in range(3):
    q.append("%s")
>>> "".join(q)
'%s%s%s'
>>> print "".join(q) % ("a","b","c")
abc
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 ) )
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top