2012-11-04 46 views
-3

Pickle模塊和+str()函數有什麼區別?我剛寫完下面這段代碼Pickle over + str()函數

def orf(codons): 
seqlist = [] 
flag = False 
start = ['ATG'] 
    stop= ['TAA','TGA','TAG'] 
    for i in codons: 
    if i in start: 
     flag = True 
      if flag == True: 
     seqlist.append(i) 
    if i in stop: 
     flag = False 
return seqlist 

frame1 = string 
codons = [frame1[i:i+3] for i in range (0, len(frame1),3)] 
one = orf(codons) 
seq1 =''.join(one) 
output1 = 'Length of 1st open reading frame is:'+str(seq1) 
#seq1 =''.join(one) 
seq_list.append(seq1) 
length1 = len(seq1) 
output_1 = '\nSize of 1st open reading frame is:'+str(len(seq1)) 
length_list.append(length1) 
out.write(output1) 
out.write(output_1) 

我使用+str()函數獲取功能(orf (codons))在一個字符串的形式。這是possibe使用Pickle。我沒有閱讀過python教程,但不明白它的含義。如果你能解決我的代碼,我會很棒。

+4

有沒有'+ STR()'函數;你在一起添加兩個字符串;預定義的字符串以及'str()'的輸出。 – jbowes

+0

哦!但是當我直接調用函數 'output_1 ='\ n時,我總是會遇到錯誤。第一個可讀框的大小是:'orf(codons)' 我必須分配diff變量,然後使用+ str()打印結果 –

回答

2

沒有+str功能。

您顯示的代碼段包含表達式'Length of 1st open reading frame is:'+str(seq1),它由字符串,+運算符和對類str的調用組成。

Pickle是一個允許(大部分)python對象被序列化爲文件(或流)的模塊。

0

str功能與pickle模塊完全不同。

str將任何Python對象轉換爲一個字符串,通常以人類可讀或「友好」的方式(也有repr函數,這樣做有點不友好並且更關注機器可讀性)。所以str([1,2,3])返回字符串'[1, 2, 3]'。自定義類可以控制str他們如何通過重寫特殊__str__方法轉換爲字符串。

pickle另一方面是爲Python對象的序列化而設計的。這也可能涉及將對象轉換爲字符串,但它完全關注機器可讀性,而不是人爲的解釋。事實上,你從酸洗多種形式獲得字符串(有幾種不同的協議),包含不能被直接視爲文本二進制值。 (pickle也有自定義類可以綁定的各種鉤子,但它們比__str__複雜一點。)

對於你的情況,pickle看起來不像你想要的。使用str可讓您將整數,列表和其他對象轉換爲字符串進行打印。絃樂,包括文字字符串創建使用引號和那些你從str獲得可以使用+操作(儘管你可能要考慮string formatting代替)級聯。請注意,如果您已經使用str.join方法將列表轉換爲字符串,則不需要再次對結果運行str(因爲您似乎正在對代碼中的seq1進行處理)。