В настоящее время я изучаю специальную тему в колледже. Моя проблема в том, что я могу удалить весь узел, который мне не нужен, но я хочу сохранить какой-то конкретный узел. Вот как я это делаю.
1.читать gml в networkx
2. используя этот код, чтобы удалить веб-сайт, который мне не нужен, а затем записать его в новый файл gml
import networkx as nx
G = nx.read_gml('test.gml')
for i in range(2000):
for node in G.nodes:
if "pu.edu.tw" not in node:
G.remove_node(node)
break
nx.write_gml(G,"finaltest.gml")
3. Как вы можете видеть часть этого gml-файла, я успешно сохраняю весь веб-сайт pu.edu.tw.
graph [
directed 1
multigraph 1
node [
id 0
label "https://www.pu.edu.tw/"
]
node [
id 1
label "https://alumni.pu.edu.tw/"
]
node [
id 2
label "https://freshman.pu.edu.tw/"
]
node [
id 3
label "https://tdc.pu.edu.tw/"
]
node [
id 4
label "https://alcat.pu.edu.tw/"
]
node [
id 5
label "https://www.secretary.pu.edu.tw/"
]
node [
id 6
label "https://pugive.pu.edu.tw/"
]
4. Проблема в том, что когда я пытаюсь нарисовать этот файл gml с помощью networkx, я получаю некоторые узлы без egdes
5. И я узнал, что причина в том, что я удалил ссылку, связанную с «pu.edu.tw», поэтому некоторые элементы отсутствуют.
Я хочу знать, как не только удалить веб-сайт, который мне не нужен, но и сохранить конкретный узел, связанный с «pu.edu.tw», чтобы края не пропадали. или какой-то способ переподключить node. Спасибо.
---------------------------------------------------------------------------------
обновить новый вопрос .... Что, если я хочу добавить несколько условий, например
def cleanup(g):
g_aux = g.to_undirected()
for node in g_aux.nodes:
if ("tku.edu.tw"or"scu.edu.tw"or"cycu.edu.tw"or"fcu.edu.tw") not in node:
for neighbor in g_aux.neighbors(node):
if "tku.edu.tw"or"scu.edu.tw"or"cycu.edu.tw"or"fcu.edu.tw" in neighbor:
break
else:
g.remove_node(node)
это правильный способ сделать?