メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2008年2月29日金曜日

[Python][お勉強] 「Pythonチュートリアル」を読む(7) -- Pythonを電卓としてつかう

今日もPythonのお勉強。

数値
Pythonをbcのように使うお話。
複素数の虚数部はiじゃなくてj。

文字列
シングルクオートでもダブルクオートでも良い。
複数行にまたがる場合は、\(バックスラッシュ)を使ってもよい。

  1. >>> "abcdefg\  
  2. ... hijklmnop"  
  3. 'abcdefghijklmnop'  
  4. >>>  
  5.    

な感じ。
raw文字列にすると・・・
  1. >>> r"abcdefg\n\  
  2. ... hijklmnop"  
  3. 'abcdefg\\n\\\nhijklmnop'  
  4. >>>  
  5.    

のように、'\n'も展開されないし、バックスラッシュも意味がなくなる。
バックスラッシュの改行は改行コードに変換される。

バックスラッシュの他、複数行出力にトリプルクオートが使える。
  1. >>> """ 
  2. ... abcdefg 
  3. ...     hijklmnop 
  4. ... """  
  5. '\nabcdefg\n    hijklmnop\n'  
  6. >>>  
  7.    


文字列の連結には+演算子が使える。
  1. >>> "abcdefg" + "hijklmnop"  
  2. 'abcdefghijklmnop'  
  3.    



文字列の繰り返しには*演算子が使える。
  1. >>> "hoge" * 2  
  2. 'hogehoge'  
  3. >>>  
  4.    


2つの隣接する文字列リテラルは自動で連結される。
  1. >>> "hoge" "tara"  
  2. 'hogetara'  
  3. >>>  
  4.    

ただし、リテラル以外であればエラー。
  1. >>> "hoge".strip() "tara"  
  2.   File "<stdin>", line 1  
  3.     "hoge".strip() "tara"  
  4.                         ^  
  5. SyntaxError: invalid syntax  
  6. >>>  
  7.    

と思いきや、左辺が文字列リテラルであれば、
右辺がリテラル以外でも問題なしの模様。
  1. >>> "hoge" "hoge".strip()  
  2. 'hogehoge'  
  3. >>>  
  4.    


文字列に添え字付けでアクセスすることもできる。
  1. >>> "hoge"[1]  
  2. 'o'  
  3. >>>  
  4.    

シーケンスなので。

同様に、スライシングも可。
  1. >>> "hoge"[1:2]  
  2. 'o'  
  3. >>>  
  4.    


注意点としては、変更不可であること。
  1. >>> "hoge"[1] = 'a'  
  2. Traceback (most recent call last):  
  3.   File "<stdin>", line 1in ?  
  4. TypeError: object does not support item assignment  
  5. >>>  
  6.    

hogeをhageにしようとしてもできない。
どうしてもhageがいい人は、
  1. >>> "hoge"[:1] + 'a' + "hoge"[2:]  
  2. 'hage'  
  3. >>>  
  4.    

のようにスライシングを利用しても良い。

スライスにでたらめなインデックス値を指定しても良い。
その場合には、Pythonにより適切に扱われる。
  1. >>> "hoge"[100:1]  
  2. ''  
  3. >>> "hoge"[100:10000]  
  4. ''  
  5. >>>  


負の値が指定された場合は、
  1. >>> "hoge"[-1]  
  2. 'e'  
  3. >>>  
  4.    

のように、最後の文字から何番目かを示していることになる。

ビルトイン関数len()は文字列の長さを返す。
  1. >>> s = "abcdefg"  
  2. >>> len(s)  
  3. 7  
  4. >>>  
  5.    



Unicode文字列もつかえる。
  1. >>> u"Hello, World!"  
  2. u'Hello, World!'  
  3. >>>  
  4.    

また、raw-Unicode文字列なるものもある。
  1. >>> ur"Hello,\u0020World!"  
  2. u'Hello, World!'  
  3. >>>  
  4.    

正規表現などを使うときに便利とのこと。

指定のエンコーディングを使ってUnicode文字列を8ビット文字列に変換したいときは
  1. >>> u"あいうえお".encode('utf-8')  
  2. '\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a'  
  3. >>>  
  4.    

のようにする。encode関数のパラメータは小文字を使うことが望ましい。

逆にエンコードデータからUnicode文字列にするときは、
  1. >>> print unicode('\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a','utf-8')  
  2. あいうえお  
  3. >>>  
  4.    

のようにunicode関数を使用する。

リストも使えると。




おしまい。
.

0 コメント: