Попытка заставить Python записывать хэштеги вместе с другими данными Twitter в Excel

Как мы все знаем, Python можно использовать для анализа данных Twitter от Tweepy. Я учу себя немного Python, но у меня проблемы с некоторыми частями программы. Я могу собирать данные и позволять Python записывать эти данные в файлы .txt, но позволить Python фильтровать необработанные данные - другое дело.

Одна новая вещь, которую я хотел бы узнать, - это прикреплять хэштеги к определенным строкам, но хэштеги закодированы в сущностях в файле .json. (Обновлено: файл примера удален, ответа, приведенного ниже, должно быть достаточно.)

Обновлено: я удалил небрежный код, который я сделал, так как он не помог, и я не хочу его здесь по нескольким причинам. Это также не нужно для анкера, приведенного ниже, который прекрасно объясняет, как извлекать хэштеги!

tweet_json содержит хэш-теги?

user9455968 01.05.2018 20:04

Рассмотрим этот пример, чтобы минимизировать код: tweet_json.get("created_at", "Creation date unkown")

Anton vBR 01.05.2018 20:07

Не могли бы вы редактировать ваш вопрос и включить небольшой образец JSON (в виде текста), который включает хэш-теги для сообщения? Тогда мы могли бы помочь вам получить их из проанализированного JSON.

user9455968 01.05.2018 20:17

@LutzHorn Я редактировал исходный пост :). Спасибо за терпение, эта задача для меня действительно сложная, и я был счастлив, что смог зайти так далеко. Надеюсь, редактирование было именно тем, что вы имели в виду, если нет, извините, и я попробую еще раз :)

Geitendrop 01.05.2018 20:30
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
138
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На основе JSON в отредактированном ответе этот код будет собирать хэштеги для одного твита.

import json

# Parse the JSON file.
tweet = json.load(open("so.json"))

# Collect the distinct hashtags for the tweet.
collected_hashtags = []

# Loop over the hashtags list in the entities object.
for hashtag in tweet.get("entities", {}).get("hashtags", []):
    collected_hashtags.append(hashtag.get("text"))

# Print the collected hashtags, join with a comma.
print(",".join(collected_hashtags))

Выход:

**UCL**

В моем коде используется dict.get, посмотрите документацию: https://docs.python.org/3/library/stdtypes.html#dict.get

Редактировать: Ваш код (с небольшими улучшениями), использующий логику hastags, описанную выше:

import codecs
import json

with open("so.json") as f:
    with codecs.open('output3.csv', 'w', "utf-8") as g:
        tweets = f.readlines()
        for line in tweets:
            if (len(line)<=10):
                continue

            tweet_json = json.loads(line)
            created_at = tweet_json.get("created_at", "")
            # more fields ...
            text = tweet_json["text"]
            text.replace('\n','').replace('\r','').replace('\t','')

            # Collect the distinct hashtags for the tweet.
            collected_hashtags = []
            for hashtag in tweet_json.get("entities", {}).get("hashtags", []):
                collected_hashtags.append(hashtag.get("text"))

            # some fields remove for brevity
            g.write("\t".join([created_at, text, ",".join(collected_hashtags)]) + "\n")

Большое спасибо уже Lutz Horn! Я добавил ваш комментарий. Могу я попросить еще об одном одолжении: как я могу вплести этот фрагмент кода в опубликованный мной код, чтобы он добавлял столбец в файле .csv с выходными данными? Другими словами: я как бы понимаю, что делает ваш код, но я недостаточно умен, чтобы самому сделать его полезным для моего собственного кода. Например, я могу просто подключить его (потому что код, который я опубликовал, - это буквально все, что я использую).

Geitendrop 01.05.2018 20:48

Погодите, занятое кодирование только для вас ... Assignment_2_data.json содержит JSON твита в каждой строке?

user9455968 01.05.2018 20:52

Держи, получай удовольствие.

user9455968 01.05.2018 21:06

Ты самый лучший!

Geitendrop 01.05.2018 21:09

Просто продолжайте использовать Python, это будет моей наградой :)

user9455968 01.05.2018 21:09

Другие вопросы по теме