python

オブジェクト指向 ≒ classを定義して使う,ということ?

オブジェクト指向ってなに? 【Python】オブジェクト指向プログラミングの概念と書き方 | HEADBOOST オブジェクト指向がわからない! そんなあなたの脳味噌をオブジェクト脳にする準備体操:CodeZine(コードジン) 初心者向けに徹底解説!オブジェクト指向…

xmlを編集・生成する方法についての備忘

構造を変えずに属性やテキストに編集を加える場合 読み込んだファイルオブジェクト(Elementオブジェクト)を直接編集し,別名のオブジェクトを作って書き出す. from lxml import etree as ET tree = ET.parse(filename) root = tree.getroot() # 編集する…

Tkinterでpygameを使って音を出すときの注意点

たとえばこんな感じで,単に音を鳴らすだけのウィンドウを作ったとして, import tkinter as tk import pygame pygame.init() pygame.mixer.init() se = pygame.mixer.Sound('./se_file.wav') root = tk.Tk() root.title('hoge') def ring(): se.play() butt…

リストやタプルの中身を展開して関数に引数として渡す

いくつかの関数は,可変長位置引数としてリストやタプルを渡すことができるが,できないものもある. 参考:変数の種類について note.crohaco.netたとえば,osモジュールのos.path.join()などがそれである. os.path.join()は,直接複数の文字列を渡すとパス…

再帰的に関数を実行するときに返り値が取得できない

はまったこと 数値を入力させたいなど,正しい値が得られるまで同じ処理を繰り返したいことがある. 具体的には,例えばこんな感じ. def get_number(): try: num = raw_input('enter number: ') except ValueError: get_number() else: return num get_numb…

一時ファイルの名前が既存のファイルと同じにならないようにする方法

十分長いランダム文字列でファイル名を決めておけばそう重複することはないだろうが,天文学的確率で起こる問題を回避するために. 所定のディレクトリに作ろうとする名前のディレクトリがある限り,新規にランダム文字列を生成する.2018/12/3追記:最初に…

try-exceptで複数の例外を定義する方法

やりたいこと いくつか例外として処理したい条件があって,それぞれ別の挙動を設定しておきたい. 疑似コードで書くと以下のような状態. try: procedure1 except Exc1: behavior1 except Exc2: behavior2 finally: procedure2 やったこと 条件ごとにExcepti…

リスト内包表記でできないかもしれないこと

リスト内包表記 リスト内包表記とは,(定義はわからないが)forループの結果をそのままリストにする書き方であり,ちょっとした応用的なpython独特の文法らしい. 内包表記を使わずにリストを定義→forループ→リストにappend,とやるより速度がだいぶ速いら…

特定の位置にある改行を除去し,2行を1行にする(または,リストのふたつの要素をつなげてひとつにする)

例 たとえばこんなテキストがあるとする. 01 ID = 0001 02 ref = hoge 03 body = "hogehogehugahuga" 04 ID = 0002 05 ref = bura 06 body = " 07 buraburaguruguru" ... 06と07は本来1行なのだが,なぜか改行されてしまっている. なんとなく構造のあるテ…

emacs shell の起動時に.bash_profileが読み込まれない問題

問題 emacsのシェルでpythonを実行すると,入っているはずのパッケージが呼び出されないことがある. $ which python /usr/bin/python $ pyenv versions system (set by /Users/user/.pyenv/version) 2.7.10 3.4.6 ∗ anaconda2-4.3.1 anaconda3-4.3.1 こんな…

要素の個数を数える

ごくシンプルな例に整理する. やりかた lang_list = [u'perl', u'python', u'ruby', u'perl', u'python', u'python', u'ruby', u'python', u'ruby', u'lisp'] lang_dic = {} for lang in lang_list: if lang not in lang_dic.keys(): lang_dic[lang] = 1 el…

ごく単純なひらがなカタカナ変換

毎回やるたびに忘れてて調べるのでメモ. やりかた hira = u'あ' kata = unichr(ord(hira) - 96) # -> kata = u'ア' やってること ord() は文字のコードを返す関数で,ascii型ならasciiコード,unicode型ならunicodeを返す. unichr() は逆にコードからunico…

リンク先の画像をまとめて保存するpythonスクリプト

珍しく仕事のデータ形式に依存しないスクリプトを書いたので,調べたことなどを忘れないように. ソース #! /usr/bin/python # coding: utf-8 import subprocess import re import sys # import codecs import os import urllib2 IMGURL = re.compile(ur'htt…

sys.argvの不思議で便利な仕様,ワイルドカードでファイル名のリストを再帰的に取得する

以前のエントリ(条件に合致するファイルを連続して読み込み,処理後にファイル名を変えて保存 - 惰力飛行)でも実はsys.argvの仕様について触れているのだが,そのときにはなぜかあまり疑問に思わなかった.しかし改めて考えると変なことが起こっている.な…

条件に合致するファイルを連続して読み込み,処理後にファイル名を変えて保存

コード code.py 文字列 "hogehoge" を含むテキストファイル filename{1,2,3,...}.txt に対し,該当文字列を "hugahuga" に置換する処理を行う. 処理後のファイルは filename{1,2,3,...}_huga.txt の名前で保存する. # /usr/bin/python #! coding: utf-8 im…

Pythonで英文の語数を数えるプログラム

たまには何か書こう。結構前に書いた、Pythonで英文の語数を数えるプログラム。wordlist = [] datafile = open('filename.txt') counter = 0 for line in datafile: line = line.rstrip() words = line.split (' ') wordlist += words for word in wordlist:…