gpt4 book ai didi

python - 如何按类别和/或位置解析 Facebook 页面的 FQL 响应? (Python)

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:25 24 4
gpt4 key购买 nike

长期听众,第一次来电..

我的 Facebook Open Graph API 查询得到了很好的结果:

fbtest = graph.request("/fql", {"q": "SELECT name, page_id, categories, location 
FROM page WHERE page_id IN (SELECT page_id FROM page_fan WHERE uid=me())"})

尽管我在 Learning Python the Hard Way 上学习了 Zed 的精彩类(class),我还是新手,需要这些方面的帮助:

  1. 我只想请求匹配特定类别的页面,例如“本地企业”,但是因为“类别”是一个列表(并且它没有在 FB 表中编入索引),所以我很难是时候弄清楚了;我假设这是不可能的。

  2. 所以我检索了一个人喜欢的所有页面的全部内容,之后我需要对其进行整理。这是我遇到的麻烦:

我如何操作结果(按类别和/或位置过滤,它们都是列表)并将它们以可读格式发送到我的 fbtest.html 文件?

目前我只是在 HTML 中呈现 fbtest 的输出;

self.render("test.html", fbtest=fbtest)

这很丑陋:

fbtest: {u'data': [{u'page_id': 8495417058L, u'name': u'Mat Zo', u'categories': [], u'location': {u'street': u'', u'zip': u''}}, {u'page_id': 9980651805L, u'name': u'deadmau5', u'categories': [], u'location': {u'street': u'', u'zip': u''}}, {u'page_id': 6209079710L, u'name': u'Ultra Records', u'categories': [], u'location': {u'street': u'', u'zip': u''}}, {u'page_id': 12609724042L, u'name': u'Oceanlab', u'categories': [], u'location': {u'street': u'', u'zip': u''}}, etc

一旦我尝试操纵该列表,我就可以发送单个结果(如页面匹配名称 =“thesocialbusiness”),但不能发送我要查找的一系列结果。我的愿景是拥有一个漂亮的图画书缩略图页面,并按位置分类和排序。

谢谢,节日快乐,

-詹姆斯

最佳答案

如果我没理解错的话,你只是想在这里过滤最终结果?如果您还没有,请继续将 json 字符串转换为 python 对象

import json
resp = json.loads(fql_resp)
data = resp['data']

loads 代表load string,这是您将从服务中获取的内容。从这里你有几个选择。一种选择是使用内置的 filter 如果您事先知道您想要什么类别。以下面的数据集为例

objs = [{'_id': 1, 'categories': ['a', 'b', 'c']},
{'_id': 2, 'categories': ['b']},
{'_id': 3, 'categories': ['c']}]

您可以像这样过滤仅包含 b 类别的结果

def f(obj):
return 'b' in obj['categories']

filtered_objs = filter(f, objs)
print(filtered_objs)
# outputs:
# [{'_id': 1, 'categories': ['a', 'b', 'c']},
# {'_id': 2, 'categories': ['b']}]

如果你想要一个可重用的函数来过滤不同的类别,你可以这样做

def filter_objs(objs, category):
result = []
for obj in objs:
if category in obj['categories']:
result.append(category)
return result

filtered_objs = filter_objs(objs, 'b')

最后,您可以只使用列表理解,根据需要内联或在 filter_objs 函数中使用。

filtered_objs = [obj for obj in objs if 'b' in obj['categories']]

所以有很多方法可以过滤结果,但第一步是使用json.loads

关于python - 如何按类别和/或位置解析 Facebook 页面的 FQL 响应? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8621634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com