我想在Facebook上创建一个在my
和my gf
之间频繁使用的单词的可视化。我直接从FB下载了JSON文件中的所有消息,我让计数器工作
但是:
sender_name
”或是13
数字的时间戳\u00c5
、\u0082a
、\u00c5
、\u0082a
这样的字符串硬编码到单词中如何排除诸如you, I, a, but
等无意义的短词?你知道吗
对于第一个问题,我尝试创建一个要排除的单词词典,但我甚至不知道如何排除它们。此外,问题在于删除时间戳编号,因为它们不是常量。你知道吗
对于第二个问题,我尝试在word编辑器中打开文件并替换符号代码,但每次都会因为文件的大小(超过150万行)而崩溃。你知道吗
下面是我用来打印最常用单词的代码:
import re
import collections
import json
file = open('message.json', encoding="utf8")
a = file.read()
words = re.findall(r'\w+', a)
most_common = collections.Counter(map(str.lower, words)).most_common(50)
print(most_common)
JSON文件结构如下:
{
"sender_name": "xxxxxx",
"timestamp_ms": 1540327935616,
"content": "Podobaj\u00c4\u0085 ci si\u00c4\u0099",
"type": "Generic"
},
你试过把json当作字典来阅读并检查类型吗?你也可以在事后寻找不需要的单词并删除它们。你知道吗
问题是您在整个文件中使用
findall
,请执行以下操作:输出
输出用于具有以下内容的文件(JSON对象列表):
解释
使用
json.load
将文件的内容作为字典列表data
加载,然后迭代字典的元素,并使用函数words
和Counter
计算'content'
字段的单词数进一步
更新
给定文件的格式,您需要将行:
data = json.load(file)
更改为data = json.load(file)["messages"]
,用于以下内容:输出为:
相关问题 更多 >
编程相关推荐