2007-01-01から1年間の記事一覧
Getリクエスト >>> import urllib2 >>> r = urllib2.urlopen("http://www.yahoo.co.jp") Postリクエスト >>> import urllib >>> query = {"name":name, "password":password} # 送信するデータ >>> query = urllib.urlencode(query ) # URLエンコード >>> r …
>>> mail = "hoge@hoge.com" >>> password = "hogehoge" >>> print "mail=%s&password=%s" % (mail, password) mail=hoge@hoge.com&password=hogehoge >>> >>> year = 1989 >>> month = 11 >>> day = 25 >>> print "%d年%d月%d日" % (year, month, day) 1989…
文字列を結合するには + よりもjoin( )を使った方が速いというので調べてみました。 from timeit import Timer setup = 's = "xxxxxxxxxx"' add_stmt = "s + s + s + s + s" join_stmt = '"".join((s, s, s, s, s))' print Timer(add_stmt, setup).repeat(3,…
コードの実行時間を計測するにはtimeitモジュールを使います。 from timeit import Timer t1 = Timer("for i in range(1000): n += 1", "n = 0") t2 = Timer("for i in xrange(1000): n += 1", "n = 0") print t1.timeit(10000) print t2.timeit(10000) 17.1…
文字列のメソッドは正規表現を使うより速いので、文字列の操作をする場合は、まず文字列のメソッドでできないかを調べた方がよいです。 文字列の一部を取り出す >>> s = "python" >>> s[2] # 2番目の要素を取り出す 't' >>> s[1:4] # 1番目から3番目までの文…
codecsモジュールを使うと、自動的にエンコードやデコードを行ってくれるファイルオブジェクトを得ることができます。 新しく開くファイル import codecs # 自動的にエンコード・デコードを行うファイルオブジェクトを生成 f1 = codecs.open("utf-8.txt", "r…
ファイルを開く、読み込む、書き込む f1 = f2 = None try: f1 = open("in.txt", "r") # 読み込みモードでファイルを開く f2 = open("out.txt", "w") # 新規書き込みモードでファイルを開く data = f1.read(100) # 100バイト分のデータを読み込む data += f1.…
正規表現の振る舞いを変える re.compile( )の第二引数にフラグを指定します。 >>> r1 = re.compile("[a-z]+=\d+", re.I) # 大文字と小文字を区別しない >>> r1.findall("abc=123&DEF=456") ['abc=123', 'DEF=456'] >>> >>> r2 = re.compile("a.+k", re.S) # …
正規表現のコンパイル >>> import re >>> r = re.compile("(\w)=(\d)") >>> print r <_sre.SRE_Pattern object at 0x00954EC0> マッチングを行う search( )は文字列の中にマッチする部分があるかを、match( )は文字列の先頭でマッチするかを調べます。 >>> import re >>> r = re.compile("[a-z]+") ></_sre.sre_pattern>…
デフォルトでは、文字列なら文字コード順、数値なら値の小さい順に並び替えます。リストやタプルの場合は、0番目の要素で並び替えを行います。 >>> list = [94, 25, 9, 67] >>> list.sort() >>> list [9, 25, 67, 94] >>> >>> list = ["banana", "grape", "o…
関数はオブジェクトです。変数に代入することも可能です。 >>> range <built-in function range> >>> hoge = range >>> hoge(1, 10) [1, 2, 3, 4, 5, 6, 7, 8, 9] 関数名は関数オブジェクトを参照している変数と考えていいんでしょうか。別の関数を代入することができます。 >>> range</built-in>…
元のリストを並び替える >>> arr = [3, 1, 5, 2, 4] >>> arr.sort() # 昇順に並び替え >>> arr [1, 2, 3, 4, 5] >>> arr = [3, 1, 5, 2, 4] >>> arr.reverse() # 逆順に並び替え >>> arr [4, 2, 5, 1, 3] これらはリストオブジェクトのメソッドなので、タプ…
>>> def sum1(start, end): ... n = 0 ... for i in xrange(start, end+1): n += i ... return n # return文で値を返す ... >>> sum1(1, 10) 55 >>> sum1(start=1, end=10) # "仮引数名=実引数"で引数を渡す(キーワード引数) 55 >>> sum1(end=10, start=1)…
シーケンス型とは文字列やリストのように順序のある要素の集まりです。組み込み型では他に、Unicode文字列、タプル、xrangeオブジェクトがあります。 要素だけを取り出して繰り返す >>> str = "python" >>> for i in str: ... print i ... p y t h o n イン…
try文はelse節を持つことができます。else節はtry節の中で例外が発生しなかった場合に実行されます。 >>> while True: ... try: ... file = open(raw_input("ファイル名: ")) ... except IOError: ... print "ファイルが見つかりません" ... else: ... for i…
try: # 例外が起こりそうな処理を記述 # 例外を発生させる if hoge(): raise ValueError("hoge error") except ValueError: # ValueErrorクラスの例外を補足 # 例外が起こった場合の処理を記述 except IOError, inst # 例外オブジェクトを変数instで受け取る…
実行中に発生するエラーは例外と呼ばれます。ほとんどの例外は自動的には処理されず、以下のようなメッセージを表示してプログラムを終了します。 >>> int("hoge") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal fo</module></stdin>…
オブジェクトから要素を一つずつ取り出して繰り返す for文を使います >>> list = ["orange", "apple", "banana"] >>> for i in list: ... print i ... orange apple banana for文に渡すことができるのは、文字列、リスト、タプルや、その他の反復可能オブジ…
辞書オブジェクトとは、キーを使って複数のオブジェクトをまとめるものです。キーには数値や文字列、タプル(変更不能なリスト)などの変更不能なオブジェクトが使えます。ただし、タプルの要素がリストのような変更可能なオブジェクトの場合はキーに使えま…
Pythonでの条件分岐にはif文を使います。unless文はcase文はありません。 真偽 真 偽でないもの全て 偽 None, False, 0, "", ( ), [ ], { } 論理演算子 not A Aが偽なら真 A and B AとBの両方が真なら真 A or B AとBのどちらかが真なら真 if文 if a > 0 and …
作成 >>> list = ["a", "b", "c", "d", "e"] >>> list ['a', 'b', 'c', 'd', 'e'] 取り出し >>> list = ["a", "b", "c", "d", "e"] # n番目の要素を取り出す >>> list[0] 'a' # インデクスが負の数だと後ろから数える >>> list[-1] 'e' # 範囲外のインデクス…
Unicode文字列とバイト文字列を結合する場合、バイト文字列は現在のシステムのデフォルトエンコーディングによってUnicode文字列に変換されます。つまり以下の二つプログラムは同じ結果となります。 # encoding=utf8 str1 = u"おはよう" str2 = "ございます"…
Pythonの文字列にはバイト文字列とUnicode文字列の二種類があります。 print "ぱいそん" # バイト文字列 => ぱいそん print u"ぱいそん" # Unicode文字列 => ぱいそん バイト文字列 バイト文字列はいわゆる普通の文字列で、指定された文字エンコーディングに…
文字エンコーディングとは 文字エンコーディングについて、Googleさんに聞いて理解したことをまとめてみます。大体合っていると思うのですが、もし違っていたらすみません。 コンピュータで扱う文字を集め、それら一つ一つに対して数値を割り当てたものを符…
pythonでは「"」と「'」の区別がありません。エスケープシーケンスをそのまま表示したい場合は、クォートの直前に「r」を置きます。 print "Python is an easy to learn,\tpowerful programming language." print 'Python is an easy to learn,\tpowerful pr…
id:aprkさんの自動ニコニコ動画紹介記事生成スクリプト AutoNicoDiary 0.1 のPython版です。Cookieをファイルに保存するようにしたので、多少はサーバに優しくなっていると思います。 使い方 kオプションでニコニコ動画の検索キーワードを、-tオプションでち…
Pythonに手を出してみようと思います。「Hello, World!」と表示するスクリプトを書いても面白くも何ともないので、mechanizeを使ってはてなダイアリーを更新するスクリプト書いてみます。 mechanizeのインストール mechanizeをインストールるにはeasy_instal…
とりあえず、Cookieの管理とリダイレクトへの対応をしてくれて、Responseオブジェクトをブロックで受け取れるメソッドを持つ、PerlでいうところのLWPみたいなのが欲しいんだが、探しても見つからない。ていうかWWW::Mechanizeがあるのに、なんでlibwww-ruby…