Python 从带有多个分隔符的.txt文件添加具有属性的节点networkx/pandas

Python 从带有多个分隔符的.txt文件添加具有属性的节点networkx/pandas,python,nodes,networkx,edges,Python,Nodes,Networkx,Edges,我有一个.txt文件,它有46行,每行代表网络中的一个节点,然后后面有很多属性 Example Name; 03.01.194, Luzern, (LU), Test, Attribute, Other Attribute, Kasdasd Alex; 22.12.1957, in Blabla, (ZH), Bürgerorte, Oeschgen (AG), Zivilstand, 我不知道我是如何让networkx将其视为一个节点列表的,一些我曾想过的事情,可能会奏效,但目前还没有

我有一个
.txt
文件,它有46行,每行代表网络中的一个节点,然后后面有很多属性

Example Name; 03.01.194, Luzern, (LU), Test, Attribute, Other Attribute, 
Kasdasd Alex; 22.12.1957, in Blabla, (ZH), Bürgerorte, Oeschgen (AG),  Zivilstand, 
我不知道我是如何让networkx将其视为一个节点列表的,一些我曾想过的事情,可能会奏效,但目前还没有

import pandas as pd
import networkx as nx
nodes = pd.read_csv('final.csv', header=None)
nodes
上面代码的问题是属性之间用逗号分隔,而不是节点

另一次尝试,我想打开文件,逐行添加节点,但被
G.add_node()
命令卡住了

G = nx.Graph()
with open('final.txt') as infile:
    for line in infile:
        G.add_node()
这两种方法中的一种是应该采用的方法,还是我应该尝试不同的方法


为了进一步分析,networkx是否提供了比较节点属性的可能性,如果它们匹配,则创建加权边

您可以通过读取将分隔符指定为“;”的文件来实现这一点因此,第一个元素是节点键,其余元素是属性。然后用分隔符“”拆分属性字符串,并将返回的列表添加为节点属性。我复制了您在“test.txt”文件中提供的示例,并执行了以下代码

G = nx.DiGraph()

csv_F = csv.reader(open("test.txt"),delimiter=';')
for row in csv_F:
    attributes=row[1].split(',')
    G.add_node(row[0], attr = attributes)
然后,我打印了节点及其属性,如下所示:

for n in G.nodes():
    print 'Node: '  + str(n)
    print 'Atrributes' + str(G.node[n]['attr'])
结果:

节点:Kasdasd Alex

报道:['22.12.1957','in Blabla','(ZH)','B\xc3\xbcrogerote','Oeschgen(AG)','Zivilstand',''

节点:示例名称

a属性:['03.01.194','Luzern','(LU)','Test','Attribute','Other Attribute','


至于你最后的问题,networkx提供了这样的功能和更多功能。看看教程。

复制并通过txt/csv文件的前几行添加第二行,它们看起来都像这个
示例名称是线中唯一一个作为点
示例名称的节点
应该是节点,其后面的其余部分应该是节点的属性