Я обращаюсь к «если», и код не работает - PullRequest
0 голосов
/ 30 октября 2019

У меня есть файл JSON, в котором объекты находятся в этой форме:

{
  "timestamp": 1568811686,
  "attachments": [
    {
      "data": [
        {
          "external_context": {
            "url": "https://media2.giphy.com/media/ce1ARlVo9jPdhwbOKL/v1.Y2lkPTEyMGMwMTQ3NTRjOGMwMjc2MTU2NzE5NmRiODQ5NzY5MTEyN2JmMmZmZTMwNjg3Mg/giphy-downsized.gif"
          }
        }
      ]
    }
  ],
  "title": "Name Surname ha commentato il post di Name Surname."
},

, но не у всех есть ключ 'url'. Я пытаюсь добавить эти объекты в базу данных neo4j, используя py2neo, и я написал следующую функцию, чтобы сделать это:

    for comment in comments['comments']:

      if 'data' in comment:
         group = ''
          for d in comment['data']:
              comment = d['comment']['comment'].encode('latin1')
               if 'group' in d['comment']:
                  group = d['comment']['group'].encode('latin1')

          if group == '':
            node = Node('Comment', timestamp=timestamp, title=title, comment=comment_text)
          else:
            node = Node('Comment', timestamp=timestamp, title=title, comment=comment_text, group=group)

        graph.create(node)

    if 'attachments' in comment:
        for attachments in comment['attachments']:
            for d in attachments['data']:
                if 'external_context' in d:
                    url = d['external_context']['url']
                    print url

Для тестирования я просто печатаю переменную url , но здесь у меня есть некоторые проблемы, на самом деле, если я запускаю этот код второй , если (, если 'attachments' в комментарии: ) не выполняется, ноесли я инвертирую два оператора if, код выполняется правильно. Почему?

1 Ответ

1 голос
/ 30 октября 2019

Вы изменяете переменную comment внутри цикла, итерируя по ней. Это обычно вызывает неприятные ошибки и считается запрещенным.

for d in comment['data']:
            comment = d['comment']['comment']

Просто измените комментарий внутри цикла на что-то другое.

...