我正在读一个json格式的tweeter feed来读取用户数。 输入文件中的某些行可能不是tweets,而是Twitter服务器发送给开发人员的消息(例如限制通知)。我需要忽略这些信息。你知道吗
这些消息将不包含已创建的\u at字段,可以相应地过滤掉。你知道吗
我已经写了下面的一段代码,提取有效的tweet,然后提取用户id还有文本。你知道吗
def safe_parse(raw_json):
try:
json_object = json.loads(raw_json)
if 'created_at' in json_object:
return json_object
else:
return
except ValueError as error:
return
def get_usr_txt (line):
tmp = safe_parse(line)
if(tmp != None):
return ((tmp.get('user').get('id_str'),tmp.get('text')))
else:
return
我的挑战是,我得到一个额外的用户称为“无”
这是一个示例输出(它是一个大文件)
('49838600', 'This is the temperament you look for in a guy who would have access to our nuclear arsenal. ), None, ('2678507624', 'RT @GrlSmile: @Ricky_Vaughn99 Yep, which is why in 1992 I switched from Democrat to Republican to vote Pat Buchanan, who warned of all of t…'),
我正在努力找出我做错了什么。tweeter文件中没有None
,因此我假设我正在读取
{"limit":{"track":1,"timestamp_ms":"1456249416070"}}
但是上面的代码不应该包含它,除非我遗漏了什么。你知道吗
有什么建议吗?谢谢你的帮助和时间。你知道吗
事实并非如此。如果发生下列情况之一:
raw_json
不是有效的JSON文档created_at
不在已分析的对象中。你知道吗返回默认值,即
None
。如果要忽略这些,可以在两个操作之间添加filter
步骤:您还可以使用
flatMap
技巧来避免filter
并简化代码(从this answer借用zero323):相关问题 更多 >
编程相关推荐