python相当于perl的qw()

时间:2010-08-20 20:37:15

标签: python perl quotes

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

printf "%8s %8s %8s\n", qw(date price ret);

然而,我在Python中提出的最好的是

print '%8s %8s %8s' % (tuple("date price ret".split()))

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

3 个答案:

答案 0 :(得分:23)

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

print '%8s %8s %8s' % ('date', 'price', 'ret')

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

def qw(s):
    return tuple(s.split())

然后你可以写

print '%8s %8s %8s' % qw('date price ret')

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

#define BEGIN {
#define END   }

答案 1 :(得分:11)

“date price ret”.split()

答案 2 :(得分:0)

QW()通常用于在Perl中使用join()打印列标题。现实世界中的列头有时很长 - 使join("\t", qw())非常有用,因为它更容易阅读并有助于消除拼写错误(例如"x","y""x\ty")。以下是实际Python中的相关方法:

    print("\t".join('''PubChemId Column ESImode Library.mzmed
      Library.rtmed Metabolite newID Feature.mzmed Feature.rtmed
      Count ppmDiff rtDiff'''.split()))

三重引号字符串是一个奇怪的东西,因为它兼作评论。但是,在这种情况下,它是一个字符串,它使我们不必担心换行符(如qw()那样)。

感谢之前的回复,让他们陶醉这种方法。