2012-02-23 70 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. 您在发布的代码中存在缩进错误。尝试发布与您运行的代码完全相同的代码(并且最好是自包含的,不要阅读不提供的文件等),以获得最佳答案。

相关问题