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

2008年2月29日金曜日

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

今日もPythonのお勉強。

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

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


>>> "abcdefg\
... hijklmnop"
'abcdefghijklmnop'
>>>
 

な感じ。
raw文字列にすると・・・

>>> r"abcdefg\n\
... hijklmnop"
'abcdefg\\n\\\nhijklmnop'
>>>
 

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

バックスラッシュの他、複数行出力にトリプルクオートが使える。

>>> """
... abcdefg
... hijklmnop
... """
'\nabcdefg\n hijklmnop\n'
>>>
 


文字列の連結には+演算子が使える。

>>> "abcdefg" + "hijklmnop"
'abcdefghijklmnop'
 



文字列の繰り返しには*演算子が使える。

>>> "hoge" * 2
'hogehoge'
>>>
 


2つの隣接する文字列リテラルは自動で連結される。

>>> "hoge" "tara"
'hogetara'
>>>
 

ただし、リテラル以外であればエラー。

>>> "hoge".strip() "tara"
File "<stdin>", line 1
"hoge".strip() "tara"
^
SyntaxError: invalid syntax
>>>
 

と思いきや、左辺が文字列リテラルであれば、
右辺がリテラル以外でも問題なしの模様。

>>> "hoge" "hoge".strip()
'hogehoge'
>>>
 


文字列に添え字付けでアクセスすることもできる。

>>> "hoge"[1]
'o'
>>>
 

シーケンスなので。

同様に、スライシングも可。

>>> "hoge"[1:2]
'o'
>>>
 


注意点としては、変更不可であること。

>>> "hoge"[1] = 'a'
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: object does not support item assignment
>>>
 

hogeをhageにしようとしてもできない。
どうしてもhageがいい人は、

>>> "hoge"[:1] + 'a' + "hoge"[2:]
'hage'
>>>
 


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

スライスにでたらめなインデックス値を指定しても良い。
その場合には、Pythonにより適切に扱われる。

>>> "hoge"[100:1]
''
>>> "hoge"[100:10000]
''
>>>



負の値が指定された場合は、

>>> "hoge"[-1]
'e'
>>>
 

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

ビルトイン関数len()は文字列の長さを返す。

>>> s = "abcdefg"
>>> len(s)
7
>>>
 



Unicode文字列もつかえる。

>>> u"Hello, World!"
u'Hello, World!'
>>>
 

また、raw-Unicode文字列なるものもある。

>>> ur"Hello,\u0020World!"
u'Hello, World!'
>>>
 

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

指定のエンコーディングを使ってUnicode文字列を8ビット文字列に変換したいときは

>>> u"あいうえお".encode('utf-8')
'\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a'
>>>
 

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

逆にエンコードデータからUnicode文字列にするときは、

>>> print unicode('\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a','utf-8')
あいうえお
>>>
 

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

リストも使えると。




おしまい。
.

0 コメント: