获取错误“预期的字符缓冲区对象”,我不知道为什么

时间:2012-02-23 16:09:54

标签: python

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个小写字母。据我所知,我应该工作,但它给出了一个错误“预期的字符缓冲区对象”。我想知道是否有人能看到我出错的地方。错误来自于:     qString.replace(indexNum + 4, “ - ”)

1 个答案:

答案 0 :(得分:5)

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