2012-02-23 33 views
1
import string 

file = open('Text.txt') 
dataArray = file.read() 
file.close() 

dataArray = str(dataArray) 
letters = [] 

qString = "" 
for j in dataArray: 
    if j.islower() == True: 
    qString = qString + "l" 
else: 
    qString = qString + "u" 

for i in range(0,len(dataArray)): 
    indexNum = qString.find("luuuluuul") 
    letters.append(dataArray[indexNum+4]) 
    qString.replace(indexNum+4,"-") 

print letters 

我在Python編程,並試圖找到字母在那張1個個小寫字母,3個大寫字母文本文件的序列, 1個小寫字母,3個大寫字母,1個小寫字母。據我所知,我應該工作,但它給出了一個錯誤「期望的字符緩衝區對象」。我想知道是否有人能看到我要出錯的地方。該錯誤是從ocuring: qString.replace(indexNum + 4, 「 - 」)得到錯誤「預期的字符緩衝區對象」,我不知道爲什麼

+0

什麼行代碼給你這個錯誤?發佈完整的追溯。 – kindall 2012-02-23 16:13:53

+0

幾個小時前,當我試圖提供'split(list)'分隔符到'single'字符分隔符時,我得到了這個錯誤。 – Animesh 2012-02-23 16:18:54

+0

我想你可以達到一個更好的結果,如果你會使用一些正則表達式。 – DonCallisto 2012-02-23 16:22:46

回答

4
  1. str.replace不是索引在更換 - 它是用於基於內容替換。

    >>> "abc".replace("b","44") 
    'a44c' 
    

    出於這個原因,給你錯誤的那一行是qString.replace(indexNum+4,"-")。最明顯的解決方法可能是切斷任何一方,並重新將這些作品重新加入新內容。

  2. 通過反覆追加q = q + ...來增加字符串效率不高。大多數的我們做什麼,而不是時間

    pieces = [] 
    for something in some_things: 
        pieces.append(make_piece_of_string(something)) 
    s = ''.join(pieces) 
    
  3. 你不需要import string這裏。

  4. 使用str.find未檢查if result == -1始終是錯誤的。考慮改用str.index

  5. 檢查if x == True是愚蠢的(有時也是越野車) - 只需檢查if x。在你的情況下,if j.islower()

  6. 您在發佈的代碼中存在縮進錯誤。嘗試發佈與您運行的代碼完全相同的代碼(並且最好是自包含的,不要閱讀不提供的文件等),以獲得最佳答案。

相關問題