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, “ - ”)
答案 0 :(得分:5)
str.replace
不是替换索引 - 而是基于内容进行替换。
>>> "abc".replace("b","44")
'a44c'
出于这个原因,为您提供错误的行为qString.replace(indexNum+4,"-")
。最明显的解决方法可能是切掉任何一方,然后用新内容重新加入这些作品。
通过重复追加q = q + ...
来增长字符串效率很低。大多数时候我们做的是
pieces = []
for something in some_things:
pieces.append(make_piece_of_string(something))
s = ''.join(pieces)
您无需import string
此处。
在不检查str.find
的情况下使用if result == -1
始终是错误的。请考虑使用str.index
代替。
检查if x == True
是愚蠢的(有时是错误的) - 只需检查if x
即可。在您的情况下,if j.islower()
。
您发布的代码中有缩进错误。尝试发布与您运行的代码完全相同的代码(最好是自包含代码,而不是阅读您未提供的文件等)以获得最佳答案。