bs.fukufuki

bookshelf of fukufuki 留学、英語、物語、よしなしごと

(抜書)Dive into Python3 第4章

文字列 - Dive Into Python 3 日本語版

リストから個々の要素を取り出すのとちょうど同じように、インデックス記法を使って文字列から個々の文字を取り出せる。 リストと同様に、文字列は+演算子で連結できる。

私はそろそろ「100本ノック」の準備運動ができる頃かもしれません

  1. 文字列の逆順 文字列"stressed"の文字を逆に(末尾から先頭に向かって)並べた文字列を得よ.
  2. 「パタトクカシーー」 「パタトクカシーー」という文字列の1,3,5,7文字目を取り出して連結した文字列を得よ.
  3. 「パトカー」+「タクシー」=「パタトクカシーー」 「パトカー」+「タクシー」の文字を先頭から交互に連結して文字列「パタトクカシーー」を得よ.

主にこの辺のことである。

追記0102とやってなんと03で詰まりました。タスケテ。できました(+=演算子を忘れていたのと、ifの条件文の文法間違えてました)

">>> import humansize

import sys '1MB = 1000{0.modules[humansize].SUFFIXES[1000][0]}'.format(sys) '1MB = 1000KB'"

 のところで、

sys.modules['humansize'].SUFFIXES[1000][0]は、si接尾語のリストの最初の要素'KB'だ。従って、例に出てきた{0.modules[humansize].SUFFIXES[1000][0]}という置換フィールドは、2文字の文字列KBで置換されることになる。

となっているのだが、ここで0にsysが代入されないのは何故だろうか(文法上、成立しないものが半自動的に弾かれているのか?)

>>>a_string = 'My alphabet starts where your alphabet ends.' >>>a_string[3:-3] 'alphabet starts where your alphabet en'

となっているのがよくわからなかったんだが……と打ちかけて、ピリオドをカウントし忘れていたことに気づいた。

bytesオブジェクトはイミュータブルだ。個々のバイトへ代入することはできない。もし個々のバイトを変更する必要があるときは、文字列スライスと結合演算子(これは文字列と同様に機能する)を使うこともできるし、bytesオブジェクトをbytearrayオブジェクトに変換することもできる。

Python3は、ソースコード(つまり.pyファイル)がutf-8エンコードされていると想定する。 ☞Python2では、.pyファイルのデフォルトの文字コードはasciiだった。Python3ではデフォルトの文字コードutf-8だ。 もしPythonのコードで異なる文字コードを使いたい場合は、文字コード宣言を各ファイルの先頭に書くことができる。

バイトリテラル構文について(参考): qiita.com

文字列に関しては、Python2と3とではいろいろと仕様変更があったようですね。