python相当于perl的qw()

Zha*_*g18 26 python quotes perl

我在Perl中做了很多这样的事情:

printf "%8s %8s %8s\n", qw(date price ret);
Run Code Online (Sandbox Code Playgroud)

但是,我能用Python得到的最好的是

print '%8s %8s %8s' % (tuple("date price ret".split()))
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有一种更优雅的方式呢?如果你告诉我那就好了,我就没事了.

Dav*_*d Z 23

好吧,绝对没有办法完全按照你在Perl中做的事情,因为Python会抱怨未定义的变量名和语法错误(可能缺少逗号).但我会这样写(在Python 2.X中):

print '%8s %8s %8s' % ('date', 'price', 'ret')
Run Code Online (Sandbox Code Playgroud)

如果你真的喜欢Perl的语法,我想你可以定义一个qw这样的函数:

def qw(s):
    return tuple(s.split())
Run Code Online (Sandbox Code Playgroud)

然后你就可以写了

print '%8s %8s %8s' % qw('date price ret')
Run Code Online (Sandbox Code Playgroud)

除了参数的一对引号之外,它基本上类似于Perl qw.但我会毫不犹豫地推荐这个.至少,不要只是因为你错过了Perl - 它只能让你否认你现在正在使用一种新的编程语言;-)这就像关于Pascal程序员切换到C并创建宏的旧故事

#define BEGIN {
#define END   }
Run Code Online (Sandbox Code Playgroud)

  • 可以肯定的是,我明确地试图绕过每个单词输入引号.单词列表通常在15-20附近运行,因此首先需要qw(). (8认同)
  • "毕竟,你只需要做一次" - 除了你只需要做一次,每次你必须这样做.在我开始定期编写perl编码之前,我从来没有意识到我创建单个令牌数组的频率,或者使用单个令牌的哈希值(这是在perl中省略引号的另一个机会)."qw"并不重要,有一个常见的案例优化可以让你删除引号. (5认同)

mas*_*onk 11

"date price ret".split()

  • 这就是 OP 已经建议的内容。因此不是很有帮助。 (6认同)