替换字典列表中的字典(来自Twitter的推文)

时间:2017-10-25 23:30:07

标签: python dictionary for-loop twitter

我有一个从Twitter API收集的推文列表。

列表中的每条推文都是字典形式。

我想将此文件中的所有字符串'en-gb'更改为'en'。

以下是两条推文的列表:

twitter_tweets =  
[{'created_at': 'Wed Oct 18 22:20:30 +0000 2017', 'id': 920776631102214144, 'user': {'id': 119116331, 'statuses_count': 32796, 'verified': False, 'lang': 'en-'}, 'retweet_count': 0, 'favorite_count': 0}
{'created_at': 'Wed Oct 17 12:20:36 +0000 2017', 'id': 920776631106514144, 'user': {'id': 119159331, 'statuses_count': 32796, 'verified': False, 'lang': 'en-gb'}, 'retweet_count': 1, 'favorite_count': 2}]

请注意“en-gb”字符串的位置:

虽然每条推文都是字典,但关键字“用户”却有一个辅助字典作为其值。辅助词典中的一个关键词是'lang'(语言),其值有时是'en-gb'(“英国英语”)。

我想将所有值'en-gb'更改为'en'。

我试过这个,但无济于事:

for item in enumerate(twitter_tweets):
    for item == 'en-gb':
        item = 'en'

2 个答案:

答案 0 :(得分:2)

您可以通过遍历列表来替换它们

{{1}}

答案 1 :(得分:0)

你可以试试这个:

tweets = [{'created_at': 'Wed Oct 18 22:20:30 +0000 2017', 'id': 920776631102214144, 'user': {'id': 119116331, 'statuses_count': 32796, 'verified': False, 'lang': 'en-'}, 'retweet_count': 0, 'favorite_count': 0}, {'created_at': 'Wed Oct 17 12:20:36 +0000 2017', 'id': 920776631106514144, 'user': {'id': 119159331, 'statuses_count': 32796, 'verified': False, 'lang': 'en-gb'}, 'retweet_count': 1, 'favorite_count': 2}]
final_tweets = [{"created_at":i["created_at"], "id":i["id"], "user":{a:"en" if b == "en-gb" else b for a, b in i["user"].items()}} for i in tweets]

输出:

[{'created_at': 'Wed Oct 18 22:20:30 +0000 2017', 'id': 920776631102214144, 'user': {'lang': 'en-', 'statuses_count': 32796, 'verified': False, 'id': 119116331}}, {'created_at': 'Wed Oct 17 12:20:36 +0000 2017', 'id': 920776631106514144, 'user': {'lang': 'en', 'statuses_count': 32796, 'verified': False, 'id': 119159331}}]