簡體   English   中英

python相當於perl的qw()

[英]python equivalent to perl's qw()

我在Perl中做了很多這樣的事情:

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

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

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

我只是想知道是否有一種更優雅的方式呢? 如果你告訴我那就好了,我就沒事了。

好吧,絕對沒有辦法完全按照你在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   }

“date price ret”.split()

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()那樣)。

感謝之前的回復,陶醉於這種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM