Как мы все знаем, Python можно использовать для анализа данных Twitter от Tweepy. Я учу себя немного Python, но у меня проблемы с некоторыми частями программы. Я могу собирать данные и позволять Python записывать эти данные в файлы .txt
, но позволить Python фильтровать необработанные данные - другое дело.
Одна новая вещь, которую я хотел бы узнать, - это прикреплять хэштеги к определенным строкам, но хэштеги закодированы в сущностях в файле .json
. (Обновлено: файл примера удален, ответа, приведенного ниже, должно быть достаточно.)
Обновлено: я удалил небрежный код, который я сделал, так как он не помог, и я не хочу его здесь по нескольким причинам. Это также не нужно для анкера, приведенного ниже, который прекрасно объясняет, как извлекать хэштеги!
Рассмотрим этот пример, чтобы минимизировать код: tweet_json.get("created_at", "Creation date unkown")
Не могли бы вы редактировать ваш вопрос и включить небольшой образец JSON (в виде текста), который включает хэш-теги для сообщения? Тогда мы могли бы помочь вам получить их из проанализированного JSON.
@LutzHorn Я редактировал исходный пост :). Спасибо за терпение, эта задача для меня действительно сложная, и я был счастлив, что смог зайти так далеко. Надеюсь, редактирование было именно тем, что вы имели в виду, если нет, извините, и я попробую еще раз :)
На основе 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 с выходными данными? Другими словами: я как бы понимаю, что делает ваш код, но я недостаточно умен, чтобы самому сделать его полезным для моего собственного кода. Например, я могу просто подключить его (потому что код, который я опубликовал, - это буквально все, что я использую).
Погодите, занятое кодирование только для вас ... Assignment_2_data.json
содержит JSON твита в каждой строке?
Держи, получай удовольствие.
Ты самый лучший!
Просто продолжайте использовать Python, это будет моей наградой :)
tweet_json
содержит хэш-теги?