'"string indices must be integers" error when loading in JSON

I want to access items from a new dictionary called conversations by implementing a for loop.

{" conversations": [
{"tag": "greeting",
"user": ["Hi", " What's your name?", " How are you?", "Hello", "Good day"],
"response": ["Hello, my name is Rosie. Nice to see you", "Good to see you again", " How can I help you?"],
"context_set": ""
},
{"tag": "Good-bye",
"user": ["Bye", "See you", "Goodbye"],
"response": ["Thanks for visiting our company", "Have a nice day", "Good-bye."]
},
{"tag": "thanks",
"user": ["Thanks", "Thank you", "That's helpful", "Appreciated your service" ],
"response": ["Glad to help!", "My pleasure", "You’re welcome."]
}
]
}

The code I use to load the dictionary in a notebook is

    file_name = 'dialogue.txt'
    with open(file_name, encoding='utf8') as f:
        for line in f:
        print(line.strip())
        dialogue_text = f.read()

This line of code does not return any results when trying to access the dictionary.

  for k in dialogue_text:
  print(k)

My intention is to write this code by implementing tokenization and stemming, but it returned an error

words = []
labels = []
docs_x = []
docs_y = []

for conversation in dialogue_text["conversations"]:
    for user in dialogue_text["user"]:
        words = nltk.word_tokenize(user)
        words.extend(words)
        docs_x.append(words)
        docs_y.append(intent["tag"])if intent["tag"] not in labels:
        labels.append(intent["tag"])words = [stemmer.stemWord(w.lower()) for w in words if w 
     != "?"]
     words = sorted(list(set(words)))labels = sorted(labels)

Error Message:

     TypeError                                 Traceback (most recent call last)
     <ipython-input-12-d42234f8e809> in <module>()
     10 docs_y = []
     11 
     ---> 12 for conversation in dialogue_text["conversations"]:
     13     for user in dialogue_text["user"]:
     14         words = nltk.word_tokenize(user)

     TypeError: string indices must be integers

What code should I write to resolve this issue?



Solution 1:[1]

Try this out:

import json

dialogue_text = json.load(open("dialogue.txt", encoding='utf8'))

for conversation in dialogue_text[" conversations"]:
    for user in conversation['user']:
        print(user)

Output:

Hi
What's your name?
 How are you?
Hello
Good day
Bye
See you
Goodbye
Thanks
Thank you
That's helpful
Appreciated your service

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1