Python 如何根据任意数量的参数使字符串动态?
如何根据任意数量的参数使字符串动态 尤其是此返回字符串:Python 如何根据任意数量的参数使字符串动态?,python,arrays,Python,Arrays,如何根据任意数量的参数使字符串动态 尤其是此返回字符串: 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}和参数[7]时,如果引号只有4个参数(总共7个参数),我会得到一个索引器 短暂性脑缺血发作 已更新,但末尾没有额外的空间: str = '{}
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}
和参数[7]
时,如果引号只有4个参数(总共7个参数),我会得到一个索引器
短暂性脑缺血发作
已更新,但末尾没有额外的空间:
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]
是第二个参数。。。。然后他们将用它的值填充那些{}
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命令或数据库查询 以下内容看起来有点简单,但很有效:
#!/bin/python
params = [1, 2, 3]
mystr = '%s ' * len(params) % tuple(params)
。。。虽然它有一个尾随空格。为了摆脱这种状况,你可以用一些更丑陋的东西,比如:
mystr = ('%s ' * (len(params)-1) + "%s") % tuple(params)
这假设老式的%插值就足够了,并且您不需要.format()方法提供的任何特殊功能。这会在第二个双引号之前产生额外的空间。使用
“”。加入以避免它。有关此代码的功能和工作方式的说明?谢谢,但它会给出此错误:中的字段名长度为零format@SamRoberts你能在两行中完成它是什么意思?添加了更详细的示例。我不知道你的代码中数据的含义是什么,但你应该使用更具描述性的quoted\u part
等。此外,如果答案适合你,你应该接受它,这样其他人知道它解决了你的问题。我想我应该提一下,你可以构建一个“模板”任何长度小于参数长度的字符串,并使用切片仅提供其项的所需子序列。这应该是显而易见的;现在还不清楚这对于您的用例是否是必要的。
mystr = ('%s ' * (len(params)-1) + "%s") % tuple(params)