61 件 見つかりました。
pythonでCGIを作成している。(ローカルで練習中:Apache 2.2.6 on WinXP SP2, python 2.4)
formで送る文字列に日本語を含めたとたんにUnicodeEncodeErrorが出るようになってしまった。わけわかんねーと思っていたが、そのものズバリの記述を発見した。
UnicodeEncodeErrorが発生した場合は、sitecustomize.pyでデフォルトのエンコーディングを指定する。
内容を理解しないままに、C:\Program Files\python24\Lib\sitecustomize.pyを作成し
import sys
sys.setdefaultencoding('utf-8')
と記述したらエラーは出なくなったし日本語変数のやりとりもうまくいっているようだ。初歩の初歩だが、pythonのファイル入出力についてメモ。
下記コードは、既存のテキストファイル(拡張子txt)の先頭に'hello'を加える。
ファイルのオープンが2回あるのがダサいので直したいけど、まあ動いてるからいいや。
import glob, sys
for fname in glob.glob('*.txt'):
f = open(fname, 'r')
str = f.read()
f.close
f = open(fname, 'w')
f.write('hello\n')
f.write(str)
プログラム開発に動作テストやデバッグは必須。でもCGIの場合、実行結果はHTTPサーバを通じブラウザで見るので、通常と比べエラー出力の吟味などデバッグ作業がやや不便である。
だがpythonにはcgitbなるモジュールが用意されており、これがある程度克服できる。
import cgitb; cgitb.enable()とスクリプトの先頭に書いておくと、スクリプト実行に失敗した折にその内容がHTMLで見られる。
完璧自分用メモ。python的にもlisp的にも恥ずかしいことをやってるかもしれないので詳しい方は見ないで下さい。
(defun insert-func (a)
(interactive "sInput variable name: ")
(insert (format "def %s(self): return self.__%s" (concat (upcase (substring a 0 1)) (substring a 1)) a))
)
定型文字列から情報を得るにはsscanfが便利。
でもpythonにsscanf相当の関数は標準ではないみたい。同等の操作は正規表現で行うようだ。
自分用雛形をメモ。目当ての正規表現パターンは丸括弧でくくり、得たMatch Objectのgroupメソッドでインデックスを指定して取り出す。
import re
def re_sample(str, regexp, index):
r = re.compile(regexp).search(str)
if r:
return r.group(index)
return None
str = "Hello World 20070819"
regexp = r"(\S+) (\S+) (\d+)" # \S ... non-whitespaces, \d ... digits
print re_sample(str, regexp, 1) # Hello
print re_sample(str, regexp, 2) # World
print re_sample(str, regexp, 3) # 20070819
regexp = r"\S+ (\d{4})(\d{2})(\d{2})"
print re_sample(str, regexp, 1) # 2007
print re_sample(str, regexp, 2) # 08
print re_sample(str, regexp, 3) # 19
pythonでHTMLをいじるにはどうすればよいか?ということを考えた。
Python and HTML Processing
Python で HTML ファイルから情報を取り出すには
にいろいろ書いてあった。まあ雛形を眺めていれば、雰囲気はわかる。
タイトルのまま。忙しくて触る時間がない
http://ymasuda.jp/python/ctypes/ctypes_jp.html
以下でうまく動いているようだ。
import sys
f = sys.stdin
for line in f:
print line.rstrip('\n'), # comma is to suppress newline charactersa