他们是否可以将检索到的数据从1010 api转换为以下格式。
存储格式:20161020 预期格式:10月20日
我想在1010data Query中执行此操作。
答案 0 :(得分:3)
1010data API和SDK将数据发送回未格式化。因此,为了以您希望的格式返回数据,您必须对其执行字符串操作。在您的情况下,您可以使用以下语法来获取所需的格式:
<willbe name="string_date" value="splice(case(month(date_col);1;'Jan';2;'Feb';3;'Mar';4;'Apr';5;'May';6;'Jun';7;'Jul';8;'Aug';9;'Sep';10;'Oct';11;'Nov';12;'Dec';NA) day(date_col);' ')"/>
您可以在此处阅读所有字符串操作函数:1010data String Functions
一旦您确定并执行了所需的格式设置,就可以使用API来检索干净的数据。下面是Python 2.7中完整API调用的示例。供参考,1010data API Documentation
import urllib2
from lxml import etree
def post(url=None, body=None):
return urllib2.urlopen(urllib2.Request(url, body, headers={'Content-Type': 'text/xml'})).read().decode('utf-8')
if __name__ == '__main__':
url = "https://www2.1010data.com/cgi-bin/prod-stable/gw.k?protocol=xml-rpc&apiversion=3&uid=UID"
response = post(url + "&pswd=PWD&api=login&kill=possess")
tree = etree.fromstring(response)
session = {}
for child in tree:
session[child.tag] = child.text
sessionurl = url + "&pswd=" + session['pswd'] + "&sid=" + session['sid'] + "&api="
query = post(sessionurl + "query",
"<in><name>pub.doc.retail.salesdetail</name><ops><sel value=i_=1/><willbe name=\"string_date\" value=\"splice(case(month(trans_date);1;'Jan';2;'Feb';3;'Mar';4;'Apr';5;'May';6;'Jun';7;'Jul';8;'Aug';9;'Sep';10;'Oct';11;'Nov';12;'Dec';NA) day(trans_date);' ')\"/></ops></in>")
data = post(sessionurl + "getdata",
"<in><cols><col>string_date</col></cols></in>")