我在Perl中做了很多这样的事情:
printf "%8s %8s %8s\n", qw(date price ret);
然而,我在Python中提出的最好的是
print '%8s %8s %8s' % (tuple("date price ret".split()))
我只是想知道是否有更优雅的方式呢?如果你告诉我它就好了,我就没事了。
答案 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()
那样)。
感谢之前的回复,让他们陶醉这种方法。