今日も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 コメント:
コメントを投稿