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