How can I get rid of "IndexError: string index out of range"
How can I get rid of "IndexError: string index out of range"
我正在尝试在图形网络中查找邻居节点。我已经在 coa_train 中导入了数据,现在正在尝试查找邻居节点。
import matplotlib.pyplot as plt
from math import isclose
from sklearn.decomposition import PCA
import os
import networkx as nx
import numpy as np
import pandas as pd
#from stellargraph import StellarGraph, datasets
#from stellargraph.data import EdgeSplitter
from collections import Counter
import multiprocessing
#from IPython.display import display, HTML
from sklearn.model_selection import train_test_split
%matplotlib inline
def readTrainingData(tr):
trainingData = []
with open(tr) as f:
for line in f:
a1, a2 = line.strip().split()
trainingData.append((a1, a2))
return trainingData
coa_train = readTrainingData("training.txt")
coa_train
[('8193', '16056'),
('24578', '21968'),
('24578', '18297'),
('24578', '16770'),
('24578', '17038'),
('8195', '2072'),
('8195', '20568'),
----------------------
import collections
def getNeighbors(data):
neighbors=collections.defaultdict(set)
for pair in data:
neighbors[pair[0]].add(pair[1])
neighbors[pair[1]].add(pair[0])
return neighbors
coa_neighbors= getNeighbors("coa_train")
在这里,我收到如下错误:
IndexError Traceback (most recent call last)
<ipython-input-41-c775c56181f7> in <module>
13 return neighbors
14
---> 15 coa_neighbors= getNeighbors("coa_train")
16
<ipython-input-41-c775c56181f7> in getNeighbors(data)
5 for pair in data:
6
----> 7 neighbors[pair[0]].add(pair[1])
8
9 neighbors[pair[1]].add(pair[0])
IndexError: string index out of range
我看不出这个错误的任何原因,因为我相信 coa_train 数据中的 0 和 1 索引是有效的。
您将一个字符串传递给函数
getNeighbors("coa_train")
但应该是变量
getNeighbors(coa_train)
以字符串作为参数,循环
for pair in data:
将为您提供单个字符。对于单个字符,您不能再做 pair[1]
。
您正在将字符串参数传递给函数
coa_neighbors= getNeighbors("coa_train")
因此你的,
for pair in data:
遍历字符串中的单个字符,这就是它给出索引超出范围错误的原因。试试这个..
coa_neighbors= getNeighbors(coa_train)
希望有用。
我正在尝试在图形网络中查找邻居节点。我已经在 coa_train 中导入了数据,现在正在尝试查找邻居节点。
import matplotlib.pyplot as plt
from math import isclose
from sklearn.decomposition import PCA
import os
import networkx as nx
import numpy as np
import pandas as pd
#from stellargraph import StellarGraph, datasets
#from stellargraph.data import EdgeSplitter
from collections import Counter
import multiprocessing
#from IPython.display import display, HTML
from sklearn.model_selection import train_test_split
%matplotlib inline
def readTrainingData(tr):
trainingData = []
with open(tr) as f:
for line in f:
a1, a2 = line.strip().split()
trainingData.append((a1, a2))
return trainingData
coa_train = readTrainingData("training.txt")
coa_train
[('8193', '16056'),
('24578', '21968'),
('24578', '18297'),
('24578', '16770'),
('24578', '17038'),
('8195', '2072'),
('8195', '20568'),
----------------------
import collections
def getNeighbors(data):
neighbors=collections.defaultdict(set)
for pair in data:
neighbors[pair[0]].add(pair[1])
neighbors[pair[1]].add(pair[0])
return neighbors
coa_neighbors= getNeighbors("coa_train")
在这里,我收到如下错误:
IndexError Traceback (most recent call last)
<ipython-input-41-c775c56181f7> in <module>
13 return neighbors
14
---> 15 coa_neighbors= getNeighbors("coa_train")
16
<ipython-input-41-c775c56181f7> in getNeighbors(data)
5 for pair in data:
6
----> 7 neighbors[pair[0]].add(pair[1])
8
9 neighbors[pair[1]].add(pair[0])
IndexError: string index out of range
我看不出这个错误的任何原因,因为我相信 coa_train 数据中的 0 和 1 索引是有效的。
您将一个字符串传递给函数
getNeighbors("coa_train")
但应该是变量
getNeighbors(coa_train)
以字符串作为参数,循环
for pair in data:
将为您提供单个字符。对于单个字符,您不能再做 pair[1]
。
您正在将字符串参数传递给函数
coa_neighbors= getNeighbors("coa_train")
因此你的,
for pair in data:
遍历字符串中的单个字符,这就是它给出索引超出范围错误的原因。试试这个..
coa_neighbors= getNeighbors(coa_train)
希望有用。