如何标记没有他的错误的推文列表?

时间:2019-05-06 21:07:03

标签: python json tokenize

我目前正在开发一个程序,用于检索有关给定主题的推文列表。在此之前,我设法检索它们并将它们保存在一个完美的JSON文件中。

当我尝试“标记”此推文列表时,问题就来了。

我遇到以下错误:

 public class Node
    {
        public string Name { get; set; }

        public ObservableCollection<Node> Nodes { get; set; }
    }

    public class FooModel
    {
        public ObservableCollection<Node> Items { get; set; }

        Random rnd = new Random();

        public FooModel()
        {
            Items = new ObservableCollection<Node>
        {
            new Node
            {
                Name ="Europe",
                Nodes = new ObservableCollection<Node>
                {
                    new Node {Name="Germany" },
                    new Node {Name="France" },
                    new Node
                    {
                        Name ="Great Britain",
                        Nodes = new ObservableCollection<Node>
                        {
                            new Node {Name="England" },
                            new Node {Name="Scotland" },
                            new Node {Name="Wales" },
                            new Node {Name="North Ireland" },
                        }
                    }
                }
            },
            new Node
            {
                Name ="Asia",
                Nodes = new ObservableCollection<Node>
                {
                    new Node {Name="China" },
                    new Node {Name="Japan" },
                    new Node { Name ="India" }
                }
            },
            new Node { Name="Afrika" },
            new Node { Name="USA" },
            new Node { Name="Australia" }
        };
        }
    }

这是代码:

Traceback (most recent call last):
  File "C:\Users\TheoLC\Desktop\python\twitter_search\collect+200tw.py", line 77, in <module>
    tweet_token = tweet['text'].tokenize()
TypeError: string indices must be integers

我还有第二个担忧:

在我的程序中,我将搜索词翻译成几种语言,以便从JSON文件中获得尽可能多的推文。

问题是,我希望将所有推文都翻译成英文,而不是从多个语言中获取带有多个推文的JSON。

因此,我尝试按如下方法应用相反的过程:

with open("%s_tweets.json" % search_word, 'a') as f:
    for tweet in new_tweets:
        json.dump(tweet._json, f, indent=4)


with open("%s_tweets.json" % search_word, 'r+') as f:
    for tweet in f:
        tweet_token = tweet['text'].tokenize()
        print('Tweet tokenize : ' + tweet_token)

这是回来的错误:

for tweet in new_tweets_fi:
    tweet['text'] = translator.translate(tweet['text'], src='fi', dest='en')
    print("Les tweets en finlandais ont été traduis")

for tweet in new_tweets_fr:
    tweet['text'] = translator.translate(tweet['text'], src='fr', dest='en')
    print("Les tweets en francais ont été traduis")

非常感谢那些能够帮助我的人

1 个答案:

答案 0 :(得分:0)

这两个错误都相关,并且与您尝试访问{math|stats}.stackexchange的事实有关。

当您遍历文件对象时,每个项目都是一个字符串。 (更具体地说,是文件中的一行文本。)因此,在第一个代码示例中,tweet['text']是一个字符串,没有tweet

这样的东西。
tweet['text']

在第二个示例中,我不确定with open("%s_tweets.json" % search_word, 'r+') as f: for tweet in f: # do stuff with tweet (a string) new_tweets_fi是哪种数据结构,但是当您遍历它们时,似乎会得到一个new_tweets_fr对象。我也不确定该对象的外观,但是无论它是什么,您都无法像使用字符串或字典一样对其进行索引。 (请参见In Python, what does it mean if an object is subscriptable or not?