У меня есть CSV-файл, и я хочу построить дерево, прочитав содержимое файла
id | screen_name | reply_status_id | tweet | stance
1 | a | null | dahgfsjhg | +
2 | b | 1 | fcjgvujhgjhk | -
3 | c | 2 | ououoijoskjfpokpo | +
4 | d | 1 | giuyhewikuhieuhi | +
5 | e | 3 | hkjhkjlkjljlkjlj | -
Я хочу создать древовидную структуру на основе идентификатора и reply_status_id с помощью твита.
Например,
a [root]
(stance of b) -/ \+ (stance of d)
b d [childs]
+/
c
-/
e
Мой CSV-файл
[link]drive.google.com/open?id=1Z8paHBJVv6FJWeskYyR_6AhB2Ifor4Mz.
Я построил дерево, используя этот код:
import csv
from anytree import Node
from anytree.exporter import DotExporter
def find_subnodes(root_node, root_node_id, nodes):
for row in lst:
node_id = row[0]
# name = regex.sub('', row[3])
name = row[3].replace('\\"', '\'').replace('"', '')
parent_node_id = row[2]
if root_node_id == parent_node_id:
node = Node(name, root_node)
nodes[node_id] = node
nodes = find_subnodes(node, node_id, nodes)
return nodes
with open('rumour1.csv') as f:
reader = csv.reader(f)
next(reader)
lst = list(reader)
r_node = Node(lst[0][3].replace('\\"', '\'').replace('"', ''))
n = {lst[0][0]: r_node}
n = find_subnodes(r_node, lst[0][0], n)
DotExporter(r_node).to_picture('tree.png')
Но края еще не отмечены этимкод.Может ли кто-нибудь помочь мне добавить ребра с помощью столбца позиции [последний столбец в CSV].