Can';t在python中遍历字符串并收集字符串列表。打字错误?
我希望能够收集一个字符串列表,将较大的字符串除以标记“ 然而,我不断地发现这个错误:Can';t在python中遍历字符串并收集字符串列表。打字错误?,python,string,int,typeerror,Python,String,Int,Typeerror,我希望能够收集一个字符串列表,将较大的字符串除以标记“ 然而,我不断地发现这个错误: TypeError: string indices must be integers, not str 这是我的密码如果有人能看一下的话 for f in phonebook: print f if phonebook[f] + phonebook[f+1] == "'," : lineString = phonebook[startpoint:(f+1)] a
TypeError: string indices must be integers, not str
这是我的密码如果有人能看一下的话
for f in phonebook:
print f
if phonebook[f] + phonebook[f+1] == "'," :
lineString = phonebook[startpoint:(f+1)]
arrayOfStrings[j] = lineString
startpoint = f+2
j = j+1 #iterate through the array
return arrayOfStrings
我希望代码的最终示例如下:
打印阵列字符串[1]
+445557284
打印阵列字符串[4]
+44555928
等等。每个
f
都将成为列表电话簿中的一个字符串。这是一个列表,所以它需要用整数索引,正如您所看到的
您需要的是枚举
for idx, val in enumerate(phonebook):
if phonebook[idx] + phonebook[idx+1] == "',"
你还应该确保检查你的边界,否则你将在这里超过列表的末尾
还有一个成对的配方,您可以实施:
from itertools import tee, izip
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return izip(a, b)
for a, b in pairwise(phonebook):
if a + b == "',":
每个f
都将成为列表电话簿中的一个字符串。这是一个列表,所以它需要用整数索引,正如您所看到的
您需要的是枚举
for idx, val in enumerate(phonebook):
if phonebook[idx] + phonebook[idx+1] == "',"
你还应该确保检查你的边界,否则你将在这里超过列表的末尾
还有一个成对的配方,您可以实施:
from itertools import tee, izip
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return izip(a, b)
for a, b in pairwise(phonebook):
if a + b == "',":
f
不是phonebook
的索引,而是来自phonebook
的值。如果需要索引,请使用enumerate
将该索引添加到循环中。由于您也在查看电话簿中的下一项,因此仅循环查看除最后一个值以外的所有值:
for i, char in enumerate(phonebook[:-1]):
if char + phonebook[i + 1] == "',":
lineString = phonebook[startpoint:i + 1]
arrayOfStrings[j] = lineString
startpoint = i + 2
j += 1
在这种情况下,您甚至可以让enumerate
从1开始,以便于偏移:
for next_index, char in enumerate(phonebook[:-1], 1):
if char + phonebook[next_index] == "',":
lineString = phonebook[startpoint:next_index]
arrayOfStrings[j] = lineString
startpoint = next_index + 1
j += 1
f
不是phonebook
的索引,而是来自phonebook
的值。如果需要索引,请使用enumerate
将该索引添加到循环中。由于您也在查看电话簿中的下一项,因此仅循环查看除最后一个值以外的所有值:
for i, char in enumerate(phonebook[:-1]):
if char + phonebook[i + 1] == "',":
lineString = phonebook[startpoint:i + 1]
arrayOfStrings[j] = lineString
startpoint = i + 2
j += 1
在这种情况下,您甚至可以让enumerate
从1开始,以便于偏移:
for next_index, char in enumerate(phonebook[:-1], 1):
if char + phonebook[next_index] == "',":
lineString = phonebook[startpoint:next_index]
arrayOfStrings[j] = lineString
startpoint = next_index + 1
j += 1
正确设置代码格式提供一个示例列表并显示您希望从中获得什么样的输出是一个好主意。“唯美主义者”是一个非常基本的例子,说明了这段代码的错误,但它最终似乎并没有真正做到你想要的。这整段代码看起来相当于电话簿中x的arrayOfStrings=[x.strip(“”),split(“,”)
,虽然在没有看到数据的情况下很难确定。正确设置代码的格式提供一个示例列表并显示您希望从中获得什么样的输出是一个好主意。关于这段代码的错误,唯美主义是一个非常基本的例子,但它最终似乎并没有真正做到你想要的。这整段代码看起来相当于电话簿中x的arrayOfStrings=[x.strip(“”)”).split(“,”)
,尽管在没有看到数据的情况下很难确定。也可以写成val+phonebook[idx+1]
。也可以写成val+phonebook[idx+1]
。