Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t在python中遍历字符串并收集字符串列表。打字错误?_Python_String_Int_Typeerror - Fatal编程技术网

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]