59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
# Este programa demonstra a leitura e utilização de dados de um ficheiro JSON
|
|
# com mensagens do Twitter.
|
|
# Modifique-o para resolver o problema proposto.
|
|
|
|
|
|
# O módulo json permite descodificar ficheiros no formato JSON.
|
|
# São ficheiros de texto que armazenam objetos compostos que podem incluir
|
|
# números, strings, listas e/ou dicionários.
|
|
import json
|
|
|
|
# Abre o ficheiro e descodifica-o criando o objeto twits.
|
|
with open("twitter.json", encoding="utf8") as f:
|
|
twits = json.load(f)
|
|
|
|
# Analise os resultados impressos para perceber a estrutura dos dados.
|
|
print(type(twits)) # deve indicar que é uma lista!
|
|
print(type(twits[0])) # cada elemento da lista é um dicionário.
|
|
print(twits[0].keys()) # mostra as chaves no primeiro elemento.
|
|
|
|
# Cada elemento contém uma mensagem associada à chave "text":
|
|
print(twits[0]["text"])
|
|
|
|
# Algumas mensagens contêm hashtags:
|
|
print(twits[880]["text"])
|
|
|
|
|
|
# A)
|
|
word_count: dict[str, int] = {}
|
|
|
|
for tweet in twits:
|
|
tweet_content: str = tweet["text"]
|
|
for word in tweet_content.split():
|
|
if word not in word_count:
|
|
word_count[word] = 0
|
|
word_count[word] += 1
|
|
|
|
word_list = list(word_count.keys())
|
|
|
|
print("A)\n" + str(word_list), end="\n\n")
|
|
|
|
|
|
# B)
|
|
|
|
ordered_list = sorted(word_list, key=lambda t: word_count[t], reverse=True)
|
|
print("B)\n" + str(ordered_list), end="\n\n")
|
|
|
|
|
|
# C)
|
|
|
|
ordered_hashtag_list = [word for word in ordered_list if word.startswith('#')]
|
|
print("C)\n" + str(ordered_hashtag_list), end="\n\n")
|
|
|
|
|
|
# D)
|
|
print("D)\n")
|
|
most_used = word_count[ordered_hashtag_list[0]]
|
|
for hashtag in ordered_hashtag_list:
|
|
print(f"{hashtag:<30} ({word_count[hashtag]:>2}) {'+' * ((word_count[hashtag]*18)//most_used)}")
|