pythonの中で新米は迷うコードの問題ができます.


pythonのコードの問題は、ここではunicodeとstrの関係だけを話しています.その他の詳細はhttp://www.cnblogs.com/huxi/articles/1897271.html.話がとても上手です
    python 2.xにおける符号化問題
1.strとunicode
strとunicodeはすべてbasestringのサブクラスです.厳密には、strはバイト列で、unicodeがコード化されたバイトからなるシーケンスです.  ,unicodeこそ本当の意味での文字列です.
  注意点:unicodeに対してdecode復号を行うのは間違いで、strに対してencode符号化を行うのは間違いです.typeを使って調べます.unicodeでdecodeを行うのはstrです.strがencodeを行うのはunicodeです.
u=u' '
#  unicode        
# s2 = u.decode('UTF-8')
#   , str         
# u2 = s.encode('UTF-8')
2.ファイルを読み、書きます
内蔵のopen()メソッドでファイルを開く場合、read()はstrを読み、読み取り後は正しい符号化フォーマットでdecode()を行う必要があります.write()書き込みの際、パラメータがunicodeであれば、あなたが書き込みたい符号を使ってencode()を行い、他の符号化フォーマットのstrであれば、まずこのstrのコードでdecode()を行い、unicodeに変換してから書き込みの符号を使ってencode()を行う必要があります.unicodeを直接パラメータとしてwrite()に導入する場合、Pythonはソースコードファイル宣言の文字コードを使ってエンコードしてから書き込みます.
# coding: UTF-8
 
f = open('test.txt')
s = f.read()
f.close()
print type(s) # <type 'str'>
#    GBK  ,   unicode
u = s.decode('GBK')
 
f = open('test.txt', 'w')
#    UTF-8   str
s = u.encode('UTF-8')
f.write(s)
3.まとめ
全体として:
1.strがencodeで復号するのはunicodeです.unicodeでエンコードするとstrです.
2.strはGBK型、UTF-8型など、多くのタイプがあります.
3.ファイルを開けて、f.read()はstrタイプです.書き込みはunicodeタイプでも大丈夫です.
4.1つのタイプから読み出して別のタイプの入力に変換するには、decode()、再encode()が必要です.例えば、GBKテキストを読み出し、UTF-8のフォーマットに書き込む.
strを読み出して、str.decode(「GBK」)によりunicodeに復号する.unicodeはu.encode('UTF-8')符号化を行います.またファイルに書き込みます.ファイルの種類はfileコマンドで確認できます.
拡張子:
isinstance(s, str)              
isinstance(s, unicode)        unicode