首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据任意数量的参数使字符串成为动态字符串?

如何根据任意数量的参数使字符串成为动态字符串?
EN

Stack Overflow用户
提问于 2014-11-23 08:32:05
回答 3查看 55关注 0票数 0

如何根据任意数量的参数使字符串成为动态字符串?

特别是这个返回字符串:

代码语言:javascript
运行
复制
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

提亚

EN

回答 3

Stack Overflow用户

发布于 2014-11-23 09:09:24

代码语言:javascript
运行
复制
print '{0} "{1}"'.format(' '.join(params[:3]), ' '.join(params[3:]))

但我建议你不要把这个放在一个线条上。分别制造两个圆盘零件,然后通过.format组装。这将更具可读性(甚至变量名会记录您的代码),并且更容易在以后进行维护。

其中一种方法是使用字典:

代码语言:javascript
运行
复制
data = {
    'first_part' : ' '.join(params[:3]),
    'quoted_part': ' '.join(params[3:])
}
print '{first_part} "{quoted_part}"'.format(**data)

如果你想在屏幕上打印这些东西,这很有效。记住,这不是一个安全的组装shell命令或数据库查询的方法!

票数 1
EN

Stack Overflow用户

发布于 2014-11-23 08:48:10

代码语言:javascript
运行
复制
str = '{} {} {} " ' + '{} '*(len(params)-3) +'"'
return str.format(*params)

在不增加末尾空格的情况下更新:

代码语言:javascript
运行
复制
str = '{} {} {} "'  + ' '.join(['{}']*(len(params)-3)) +'"'
return str.format(*params)

>>>params=[1,2,3,4,5,6,7]

输出

代码语言:javascript
运行
复制
'1 2 3 "4 5 6 7"'

' '.join(['{}']*(len(params)-3))创建一个'{}'字符串,len(params)-3决定它们的数量。

*params表示参数的集合。在这里,它将参数解压到一个参数集合中。param[0]是第一个参数,param[1]是第二个参数...然后,它们将用它的值填充这些{}

票数 0
EN

Stack Overflow用户

发布于 2014-11-23 18:44:03

下面的代码看起来有点简单化,但却很有效:

代码语言:javascript
运行
复制
#!/bin/python
params = [1, 2, 3]
mystr = '%s ' * len(params) % tuple(params)

..。尽管它确实有一个尾随空格。为了摆脱它,你可以使用一些更丑陋的东西,比如:

代码语言:javascript
运行
复制
mystr = ('%s ' * (len(params)-1) + "%s") % tuple(params)

这里假设老式的%插值就足够了,并且不需要.format()方法提供的任何特殊功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27084171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档