如何根据任意数量的参数使字符串成为动态字符串?
特别是这个返回字符串:
return '{0} {1} {2} "{3} {4} {5} {6}"'.format(params[0], params[1], params[2], params[3], params[4], params[5], params[6])它需要能够处理引号之间的4到7个参数,当我添加{7}和params[7]时,如果引号只有4个参数(总共7个参数),我会得到一个IndexError。
提亚
发布于 2014-11-23 09:09:24
print '{0} "{1}"'.format(' '.join(params[:3]), ' '.join(params[3:]))但我建议你不要把这个放在一个线条上。分别制造两个圆盘零件,然后通过.format组装。这将更具可读性(甚至变量名会记录您的代码),并且更容易在以后进行维护。
其中一种方法是使用字典:
data = {
'first_part' : ' '.join(params[:3]),
'quoted_part': ' '.join(params[3:])
}
print '{first_part} "{quoted_part}"'.format(**data)如果你想在屏幕上打印这些东西,这很有效。记住,这不是一个安全的组装shell命令或数据库查询的方法!
发布于 2014-11-23 08:48:10
str = '{} {} {} " ' + '{} '*(len(params)-3) +'"'
return str.format(*params)在不增加末尾空格的情况下更新:
str = '{} {} {} "' + ' '.join(['{}']*(len(params)-3)) +'"'
return str.format(*params)
>>>params=[1,2,3,4,5,6,7]输出
'1 2 3 "4 5 6 7"'' '.join(['{}']*(len(params)-3))创建一个'{}'字符串,len(params)-3决定它们的数量。
*params表示参数的集合。在这里,它将参数解压到一个参数集合中。param[0]是第一个参数,param[1]是第二个参数...然后,它们将用它的值填充这些{}。
发布于 2014-11-23 18:44:03
下面的代码看起来有点简单化,但却很有效:
#!/bin/python
params = [1, 2, 3]
mystr = '%s ' * len(params) % tuple(params)..。尽管它确实有一个尾随空格。为了摆脱它,你可以使用一些更丑陋的东西,比如:
mystr = ('%s ' * (len(params)-1) + "%s") % tuple(params)这里假设老式的%插值就足够了,并且不需要.format()方法提供的任何特殊功能。
https://stackoverflow.com/questions/27084171
复制相似问题