2012-02-23 13 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

+0

数時間前にこのエラーが発生しました。私は 'split()'にデリミタのリストを提供しようとしましたが、単一の '文字'区切り文字が必要です。 – Animesh

+0

私はいくつかの正規表現を使用する場合bettere結果に到達することができると思います。 – DonCallisto

答えて

4
  1. str.replaceインデックスで置換するためではない - それはコンテンツに基づいて、交換のためです。

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

    このような理由から、エラーを返す行はqString.replace(indexNum+4,"-")です。最も明白な回避策は、どちらかといえば切り離して、新しいコンテンツに作品を戻すことです。

  2. 繰り返しによる文字列の追加q = q + ...は非効率的です。私たちが代わりに何をすべきかの時間のほとんどは、あなたがここにimport stringする必要はありません

    pieces = [] 
    for something in some_things: 
        pieces.append(make_piece_of_string(something)) 
    s = ''.join(pieces) 
    
  3. です。

  4. str.findを使用してチェックすると、if result == -1は常に間違っています。代わりにstr.indexを使用することを検討してください。

  5. if x == Trueを確認することは愚かです(時にはバギー) - ちょうどif xをチェックしてください。あなたの場合、if j.islower()

  6. 投稿したコードにインデントエラーがあります。可能な限り最良の答えを得るために、あなたが実行したコードと同じコードを投稿してください(あなたが提供していないファイルを読むことはできません)。

関連する問題