得到错误“预期的字符缓冲区对象”,我不知道为什么
问题描述:
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, “ - ”)得到错误“预期的字符缓冲区对象”,我不知道为什么
答
-
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()
。您在发布的代码中存在缩进错误。尝试发布与您运行的代码完全相同的代码(并且最好是自包含的,不要阅读不提供的文件等),以获得最佳答案。
什么行代码给你这个错误?发布完整的追溯。 – kindall 2012-02-23 16:13:53
几个小时前,当我试图提供'split(list)'分隔符到'single'字符分隔符时,我得到了这个错误。 – Animesh 2012-02-23 16:18:54
我想你可以达到一个更好的结果,如果你会使用一些正则表达式。 – DonCallisto 2012-02-23 16:22:46