想親身體會一下從 py2 升到 py3 會有多痛苦,決定把自己來一遍。遇到以下的事情,其實感覺還好。
# 2
我最常遇到的是 print 後面要加括號,用手動改久了真的很想用 regexp 之類的直接取代
# 3
urllib 被拆成幾個部份,我有用到的:
urllib.urlencode ---> urllib.parse.urlencode
urllib.urlopen ---> urllib.request.urlopen
# 4
文字編碼的問題會在幾個地方遇到
在檔案讀寫,改用 codecs 的 open 並指定 encoding。
urlopen,得到的內容要 decode(encoding)
csv.reader 改用 codecs 的 open 並指定 encoding。
# 5
dict1.keys() 回傳的東西不是單純的 list,所以沒辦法做到 dict1.keys().sort()。解決方法是 sorted(dict1.keys())
從這樣:
dict1.keys().sort()
變這樣:
sorted(dict1.keys())
# 6
sort 原先有 cmp function 的,現在只能 key function,兩者概念相差甚大。現在 py3 提供 wrapper 從 cmp function 轉成 key function。
從這樣:
sorted(cursor,key=cmpbyyear, reverse=True)
變這樣:
sorted(cursor,key=functools.cmp_to_key(cmpbyyear), reverse=True)
# 7
dict1.has_key('skey') 現在不能用,改成 'skey' in dict1
從這樣:# 8
dict1.has_key('skey')
變這樣:
'skey' in dict1
map 現在回傳是個 map 物件,是一種 iter,如果沒有執行 iter 動作的話,就不會真的開動。最簡單的方法就是包一層 list。
從這樣:
map(func, seq)
變這樣:
list(map(func, seq))
沒有留言:
張貼留言