كيف يمكنني إنشاء سلاسل بيثون مع أصحاب نائب مع عدد تعسفي من العناصر

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

  •  28-09-2019
  •  | 
  •  

سؤال

أستطيع أن أفعل

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

لكن لا يمكنني إدخال VARS في متغير آخر حتى أتمكن من إنشاء قائمة من VARS على الطيران مع منطق التطبيق. فمثلا

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

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

أي أفكار حول كيفية القيام بذلك مع بيثون 2.6؟

هل كانت مفيدة؟

المحلول

وماذا عن هذا؟

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

حقا ، هذه طريقة سخيفة إلى حد ما لفعل الأشياء. إذا كنت ترغب فقط في سحق جميع المتغيرات معًا في سلسلة واحدة كبيرة ، فمن المحتمل أن تكون هذه فكرة أفضل:

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

وهذا يتطلب على الأقل بيثون 2.4 للعمل.

نصائح أخرى

استخدم قائمة لإلحاق/إزالة السلاسل ثم ".

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