2011-04-18 147 views
0

我想在Python 3中打印並遇到問題。我有一個在我的代碼迴路,看起來像這樣:在python 3中打印格式化

seq = input("enter DNA sequence to search: ") 
pat = re.compile('(.{10})(ATC.{3,6}CAG)') 
li = [] 
output_lines = [] 
for mat in pat.finditer(seq): 
    x = mat.end() 
    li.append(mat.groups()+(seq[x:x+10],)) 
for u in li: 
    z = u[1] 
    A = z.count('A') 
    C = z.count('C') 
    G = z.count('G') 
    T = z.count('T') 
    sumbases = [A,C,G,T] 
    print(sumbases) 

當我打印sumbases,我得到這個例如:

[1, 2, 3, 4] 
[2, 0, 1, 4] 

我試圖格式化像這樣的輸出:

[1, 2, 3, 4],[2, 0, 1, 4] 

任何人都可以告訴我這個問題嗎?提前致謝。

+0

這是*不*從這段代碼的輸出。它會在每次迭代中精確地打印出'A,C,G,T'和一個換行符。如果您發佈了真實代碼,或者至少與示例一致,我寧願選擇。 – delnan 2011-04-18 11:05:49

+0

謝謝,對不起,我沒有包括整個代碼。我可以看到這個問題如何不清楚。 – drbunsen 2011-04-18 11:22:24

+0

@delnan我編輯我的帖子,包括整個代碼。 – drbunsen 2011-04-18 12:03:04

回答

2

你可以試試這個:

output_lines = [] 
for u in li: 
    z = u[1] 
    A = z.count('A') 
    C = z.count('C') 
    G = z.count('G') 
    T = z.count('T') 
    sumbases = "A,C,G,T" # I suppose you format it here differently 
    y = sumbases.replace("\n"," ") # not sure why you need this 

    # print(y) # don't print now, print later... 
    output_lines.append(y) 

print(','.join(output_lines)) 

編輯爲您編輯的問題:

seq = input("enter DNA sequence to search: ") 
pat = re.compile('(.{10})(ATC.{3,6}CAG)') 
output_lines = [] 
for mat in pat.finditer(seq): 
    x = mat.end() 
    z = (mat.groups()+(seq[x:x+10],)[1] 
    output_lines.append(str([z.count(a) for a in 'ACGT')])) 
print(','.join(output_lines)) 
+0

不知道我的'print(y,end =',')'建議 - 它增加了一個醜陋的尾隨逗號。這樣更好,但如果整個循環可以摺疊成一個生成器表達式,它會更好。 – delnan 2011-04-18 11:17:47

+0

感謝您的幫助。我不認爲這個語法在python 3中支持print語句嗎?當我嘗試這個我得到一個錯誤? – drbunsen 2011-04-18 11:21:55

+1

@sebrowns - 對不起,只需將括號括起來(請參閱我編輯的答案)。另外,如果你在stackoverflow.com上寫'我得到一個錯誤',然後嘗試將它包含到你的評論中。 – eumiro 2011-04-18 11:25:28