地球ウォーカー2

Scala, Python の勉強日記

MacのOSアップデート後にGenymotionが起動しなくなったときの対処法

経緯

MacのOSをMavericksにアップデート!

Genymotionが起動しない…。

対処法

VirtualBoxを再起動する。

sudo /Library/StartupItems/VirtualBox/VirtualBox restart

参考

Pythonの文字列 (3) + リスト

文字列

今回は文字列に関するPython特有っぽい機能について*1

  • 文字列の繰り返し
  • Unicode 文字列
  • 文字列の長さを調べる
>>> 'Abc' * 2
'AbcAbc'

>>> u'あいうえお'
u'\u3042\u3044\u3046\u3048\u304a'

>>> len(u'あいうえお')
5

ところで

前回勉強したstr.formatについて、数値の書式を設定したい場合はどうするんだろうとふと思って調べてみたら当然のことながら、Pythonにも様々な書式が用意されているらしい。

# 数値のフォーマット
>>> 'x = {0:.2f}'.format(0.666)
'x = 0.67'

# 名前を使ったアクセスもできる
>>> '(x, y) = ({px}, {py})'.format(px='5', py='3')
'(x, y) = (5, 3)'

リスト

>>> li = ['a', True, 100, [3, 5]] # 1つのリストに複数の型を入れられる
>>> li
['a', True, 100, [3, 5]]

>>> li[1:2] = []
>>> li
['a', 100, [3, 5]]

まとめ

インデックス、スライス演算、lenなど、文字列と同じ感覚で操作できていい感じ。
lenstrとかlistのメソッドじゃないのが違和感があるなぁ…。

Todo

Unicode文字列がどんな場面で使われるか調べる。

*1:他の言語にもあるかもしれないが、少なくともJavaJavaScriptには無い

Pythonの文字列 (2)

前回のToDoについて

ToDo

Javaの文字列操作と同等のメソッドがあるか確認する

  • String#indexOf
  • String#trim
  • String#format
  • String#split

文字列操作メソッドはいろいろ用意されていてるらしく、上記も当然サポートされている*1。詳細は5.6.1. 文字列メソッド参照。

一例として、以下がある。

  • str.find(sub[, start[, end]])
    • 文字列を検索する
    • 存在しない場合は-1を返す
>>> "FooBar".find("ooB")
1
>>> "FooBar".find("ooF")
-1
  • str.strip([chars])
    • 文字列をトリムする
    • charsを指定した場合は、文字列の先頭と末尾からcharsを除去する
>>> " FooBar ".strip()
['FooBar']
>>> "rFooBar".strip("r")
'FooBa'

個人的に一番面白いと思ったのがstr.format(*args, **kwargs){0}{1}などを使って置換文字列を指定するらしい。下記サンプルの文章は超適当に考えた。

>>> "This {0} a {1}. It {0} mine.".format("is", "pen")
'This is a pen. It is mine.'

*1:メソッド名は異なる

Pythonの文字列

今日からPython チュートリアルを少しずつこなしていく。

3.1.2 文字列

  • 文字列は " or ' で囲む
>>> "Hello World!"
'Hello World!'
  • 複数行の文字列は """で開始する
    • 改行コード(\n)も付加してくれるらしい
>>> """This
... is
... multiple message.
... """
'This\nis\nmultiple message.\n'
  • 文字列の連結は+演算子を使う
>>> "Foo" + "Bar"
'FooBar'
  • [開始位置:終了位置]を指定して任意の位置の文字列を取り出せる
    • スライス演算と呼ぶらしい
>>> ("Foo" + "Bar") [3:5]
'Ba'
>>> ("Foo" + "Bar") [3:2]  # 開始位置 > 終了位置 の場合はブランク
''
>>> ("Foo" + "Bar") [-1]   # 後ろから1番目
'r'
  • Javaと同じで文字列はイミュータブル(変更しようとするとエラーがでる)
>>> ("Foo" + "Bar") [-1] = "a"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment


とりあえず今日はここまで。

ToDo

Javaの文字列操作と同等のメソッドがあるか確認する

  • String#indexOf
  • String#trim
  • String#format
  • String#split

今年学びたいこと

もうすでに3月も終わろうとしているけれど、今年学びたいこと。
 
ところで、MacBook Proが4月~6月に出るという噂があるので発売したら買いたい。
WindowsにもMacのようなTerminalがあったらいいんだけど。
 

ブログ移転した

はてな日記(地球ウォーカー)から移転した。
日記の方の更新を 最近サボっていたので、これを機に再開していきたい。

今のところ、"地球ウォーカー2"というひねりの無いタイトルなのであとで変えたい。