Python3でModuleNotFoundError: No module named 'urllib2'
のようなエラーが出た場合の解決方法。urllib2はPython2用のモジュールで、3はurllib.requestとurllib.errorに分かれていると、解決策が載っているこのサイトに書いてある。以下のコードを例に修正を試みてみる。
import urllib2
をfrom urllib.request import urlopen
に、from StringIO import StringIO
をimport io
に書きえ、f = urllib2.urlopen
をf = urlopen
に書き換えれば、とりあえずimport errorは修正される。しかし、コードを実行すると以下のエラーが出る。
17 print('Raw data looks like this:')
---> 18 print(raw_data[:100] + '...')
TypeError: can't concat str to bytes
このサイトによると、'...'
の前にbを付ければいいらしい。b'...'
に書き換えてコードを実行したら無事成功した。
b'5.1,3.5,1.4,0.2,Iris-setosa\n4.9,3.0,1.4,0.2,Iris-setosa\n4.7,3.2,1.3,0.2,Iris-setosa\n4.6,3.1,1.5,0.2,...'
このサイトによると、b’は、python3に特有で、python2ではb’は付かないらしい。このb’を取り除くには、下記のようにコードを修正する必要がある。
1 2 3 | raw_data = (f.read()).decode("utf-8") print('Raw data looks like this:') print (raw_data[:100] + '...') |
こうすることで以下のようにチュートリアルと同じoutputになる。
5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,...
Pythonによるdeep learning programming(深層学習プログラミング)はネット上にチュートリアルがゴロゴロ転がりまくっているのでかなり有り難い。