Построение дерева из CSV с помеченным краем - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть 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].

...