Python словарь удалить ключ - PullRequest
0 голосов
/ 29 декабря 2018

Я начинаю с Python и застрял сейчас.Я должен получить только ключ 'text' из длинного списка в .txt, например:

{"delete":"status":"id":294512601600258048,"id_str":"294512601600258048","user_id":90681582,"user_id_str":"90681582"}, "timestamp_ms":"1410368494083"}}

и

{
    "created_at": "Wed Sep 10 17:01:33 +0000 2014",
    "id": 509748524897292288,
    "id_str": "509748524897292288",
    "text": "@Brenamae_ I WHALE SLAP YOUR FIN AND TELL YOU ONE LAST TIME: GO AWHALE",
    "source": "\u003ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for Android\u003c\/a\u003e",
    "truncated": false,
    "in_reply_to_status_id": 509748106015948800,
    "in_reply_to_status_id_str": "509748106015948800",
    "in_reply_to_user_id": 242563886,
    "in_reply_to_user_id_str": "242563886",
    "in_reply_to_screen_name": "Brenamae_",
    "user": "id": 175160659,
    "id_str": "175160659",
    "name": "Butterfly",
    "screen_name": "VanessaLilyWan",
    "location": "Canada, Montreal",
    "url": "http:\/\/instagram.com\/vanessalilywan",
    "description": "British youtubers. 'Nuff said.",
    "protected": false,
    "verified": false,
    "followers_count": 118,
    "friends_count": 180,
    "listed_count": 2,
    "favourites_count": 319,
    "statuses_count": 10221,
    "created_at": "Thu Aug 05 20:03:16 +0000 2010",
    "utc_offset": -36000,
    "time_zone": "Hawaii",
    "geo_enabled": false,
    "lang": "en",
    "contributors_enabled": false,
    "is_translator": false,
    "profile_background_color": "B2DFDA",
    "profile_background_image_url": "http:\/\/abs.twimg.com\/images\/themes\/theme13\/bg.gif",
    "profile_background_image_url_https": "https:\/\/abs.twimg.com\/images\/themes\/theme13\/bg.gif",
    "profile_background_tile": false,
    "profile_link_color": "93A644",
    "profile_sidebar_border_color": "EEEEEE",
    "profile_sidebar_fill_color": "FFFFFF",
    "profile_text_color": "333333",
    "profile_use_background_image": true,
    "profile_image_url": "http:\/\/pbs.twimg.com\/profile_images\/470701406245376000\/2aXDrauR_normal.jpeg",
    "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/470701406245376000\/2aXDrauR_normal.jpeg",
    "profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/175160659\/1404361640",
    "default_profile": false,
    "default_profile_image": false,
    "following": null,
    "follow_request_sent": null,
    "notifications": null
}, "geo": null, "coordinates": null, "place": null, "contributors": null, "retweet_count": 0, "favorite_count": 0, "entities": {
    "hashtags": [],
    "trends": [],
    "urls": [],
    "user_mentions": [{
        "screen_name": "Brenamae_",
        "name": "I-G-G-Bye",
        "id": 242563886,
        "id_str": "242563886",
        "indices": [0, 10]
    }],
    "symbols": ]
}, "favorited": false, "retweeted": false, "possibly_sensitive": false, "filter_level": "medium", "lang": "en", "timestamp_ms": "1410368493668"
}

Так что у меня есть эти 2 вида ключей, и насколькокак я мог бы это:

    import json
with open('salida_tweets.txt') as f:
    for line in f:
        texto=json.loads(line)
        objetos=texto.get('text')           
        print(objetos)

Нет

@ Brenamae_ Я КИТАЙШУ СВОЙ ФИН и СКАЖУ ВАМ ОДНОМ ПОСЛЕДНЕГО ВРЕМЕНИ: ПОЙДИТЕ ВНУТРИ

Но в распечатке первый все еще отображается как «Нет», и мне нужен чистый текст, чтобы смешать его с другим файлом.

Может кто-нибудь мне помочь?

РЕДАКТИРОВАТЬ Извините, я не уточнил, мне нужно отделить строку «текст», которая содержится во второй строке.Мне нужно, чтобы смешать его с файлом, который содержит несколько слов и цифр.Например:

для этого

"text": "@Brenamae_ I, КИТАЙТЕ ХОЛОДНО, СКАЖИТЕ СВОЙ ФИН и СКАЖИТЕ, ЧТО ОДИН ПОСЛЕДНИЙ РАЗ: GO AWHALE"

Я должен смешать его с

SLAP -3 LAST -1

Чтобы получить: 1.Tweet -4

Так что я могу получитьоценка за каждый «текст».

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Метод .get возвращает None при поиске ключа в словаре, который не существует, поэтому вместо того, чтобы всегда печатать objetos, вы могли бы сначала проверить возвращаемое значение с texto.get('text').

Например,

import json

with open('salida_tweets.txt') as f:
    for line in f:
        texto = json.loads(line)
        objetos = texto.get('text')

        # implement logic
        if objetos:
            print(objetos)

. Таким образом, ваш код не будет печататься, если ключ text не существует.

0 голосов
/ 29 декабря 2018

Чтобы полностью удалить ключ из словаря, используйте метод «pop».

dictionary.pop(key[, default])

Если вас не интересует значение удаляемого ключа и вы не хотите тестироватьесли он существует до удаления, вы можете просто сделать:

text = dictionary.pop('text', None)

Это сделает переменную "text" значением словаря ['text'] или None, если ключ не существует.

Тем не менее, ваш вопрос кажется неясным - похоже, вы не хотите, чтобы ключ с именем 'text' от объекта, а значение ключа в объекте, который оказывается текстом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...