【问题标题】:how to change data type from byte to list when pulling data from api从api中提取数据时如何将数据类型从字节更改为列表
【发布时间】:2016-10-14 02:13:27
【问题描述】:
from requests import Session
import json
import pandas as pd

query = '''SELECT referring_domain, event_name FROM cooladata LIMIT  5000000;'''

def SQLtoURL(query):

    data = query.replace('\n', ' ').replace('\t',' ').replace('   ',' ').replace('  ',' ')
    return data


def QueryCoola(query, file = None):

    session = Session()
    response = session.post(data = {'tq': query,'tqx': "out:csv",},
                              url =    'https://app.abcdefg.com/api/v2/projects/1111111/cql/', 
                              headers = {'Authorization': 'Token ****************'},)

    return response.text.encode('utf-8')



data = QueryCoola(SQLtoURL(query))

现在data 类型以字节为单位,我如何在列表或字典中获取data,以便将其传输到 pandas 数据帧中?

我目前正在做的是删除encode('utf-8'),所以我以文本形式获取它并手动将其拆分为一个列表,然后我可以将其移动到熊猫数据框中。问题在于空值等等我不想继续手动处理这些问题。任何帮助将不胜感激,谢谢。

print(QueryCoola(SQLtoURL(query)))

输出: b'"referring_domain"\n"www.google.com"\nnull\n"mood.reshet.tv"\n"m.facebook.com"\n"www.google.co.il"\nnull\nnull\ n"www.google.com"\n"mood.reshet.tv"\n"www.google.com"\n'

【问题讨论】:

  • 你不能json.loads吗?
  • 不,我试试。我认为它只是从字符串到列表
  • 也许您应该发布一个数据实际外观的最小示例?
  • TypeError: the JSON object must be str, not 'bytes'
  • 是我在OUTPUT下写的不够好?如果是这样,您希望我发布什么?

标签: python json pandas python-requests


【解决方案1】:

首次使用 response.content 它将为您提供收到的未解释字节请求。

想要在换行符 (\n) 上拆分文本,如

your_list = data.split("\n")

这会给你这个输出:

['"referring_domain"', '"www.google.com"', 'null', '"mood.reshet.tv"', ...]

您可以删除 'null' 值:

your_list = filter(lambda a: a != "null", your_list)

然后删除不必要的"

your_list = [e[1:-1] for e in your_list]

这会得到你:

['referring_domain', 'www.google.com', 'mood.reshet.tv', 'm.facebook.com', 'www.google.co.il', 'www.google.com', 'mood.reshet.tv', 'www.google.com', '']

要删除最后一个空 ('') 值,请再次过滤列表:

your_list = filter(lambda a: a != "", your_list)

【讨论】:

  • 我收到AttributeError: 'Response' object has no attribute 'result'
  • 但是您可以忽略“第二次将字节转换为类似列表”,因为我当时不明白您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 2011-12-02
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-06
相关资源
最近更新 更多