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')
所以我在文本中获取它并手动将其拆分为一个列表,然后我可以移动到pandas数据框中。问题是空值等等我不想手动处理这些问题。非常感谢任何帮助,谢谢。
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'
答案 0 :(得分:-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)