#python 3 version
...
#關於產地
...
crop = '牛蒡'
...
#要求輸入資料
def rundatainputcircle():
marketinput = input('*請擇一輸入: 1:台北一, 2:台北二, 3:三重市, 4:台中市, 5:高雄市, 6:鳳山市, 7:桃園縣 或是不填寫 > ')
if marketinput == '':
market = ''
elif len(str(marketinput)) ==1 and 1 <= int(marketinput) <= 7:
market = uriba[uribalist[int(marketinput)-1] + 1]
else:
print('請重新輸入:1:台北一, 2:台北二, 3:三重市, 4:台中市, 5:高雄市, 6:鳳山市, 7:桃園縣 或是不填寫 > ')
rundatainputcircle()
rundatainputcircle()
#匯入資料
def rundatacircle():
url = 'http://m.coa.gov.tw/OpenData/FarmTransData.aspx?' + '$top=' + top + '&$skip=0&crop=' + crop + '&StartDate=' + startdate + '&EndDate=' + enddate
if market != '':
url += '&Market=' + market
else:
url = url
url = url.encode('ascii')
print(url)#test
urllib.request.urlretrieve(url, "data.gz")
data_str = open('data.gz', 'r').read()#gzip.open('data.gz', 'r').read()
gobou_data = json.loads(data_str)
print(len(gobou_data))#test
return gobou_data
rawdata = rundatacircle()
它显示了一个错误:
^{pr2}$错误信息部分:
------ UnicodeEncodeError Traceback (most recent call last) in () 92 print(len(gobou_data))#test 93 return gobou_data ---> 94 rawdata = rundatacircle() 95 96 #開始按照月份把資料載下來,從今天所屬的這個月,一直自動存到資料的最開頭101.01.01
in rundatacircle() 87 url = url 88 print(url)#test ---> 89 urllib.request.urlretrieve(url, "data.gz")#python 3 getting pics from url 90 data_str = open('data.gz', 'r').read()#gzip.open('data.gz', 'r').read() 91 gobou_data = json.loads(data_str)
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py in urlretrieve(url, filename, reporthook, data) 185 url_type, path = splittype(url) 186 --> 187 with contextlib.closing(urlopen(url, data)) as fp: 188 headers = fp.info() 189
……它很长,所以我没有列出全部信息。在
我在Google和stackflow上尝试过很多方法,但都解决不了这个问题。我无法理解错误的含义。在
这部分代码有问题。我用的是python3.5
作物是一个中文单词,不应该更改或删除。 如果它被删除了,数据就会出错。。。。在
你的问题是你用来编码你的URL的ascii编码不理解中文字符。在
经过短时间的网络搜索,我找到了支持汉字的gb18030编码。 https://en.wikipedia.org/wiki/GB_18030
试着用这个来编码你的网址。在
最后,我找到了一个解决这个问题的方法,它分为两个部分。在
首先,我改变了url中中文单词的编码:
然后从这个列表中加载数据。在
^{pr2}$注意函数是否有编码或解码。 您可以通过
print(dir(XXX))
来检查这个问题(您可以通过这个来理解:python 3 subprocess error in bytes)
相关问题 更多 >
编程相关推荐