Top > Python

日本語文字列の扱いについて Edit

Pythonのお勉強 Part21
http://pc11.2ch.net/test/read.cgi/tech/1192884897/ より引用

501 :デフォルトの名無しさん [↓] :2007/11/14(水) 16:10:49

pythonって日本語処理が苦手ってどっかで多々見たんですがどうなんですか?

502 :デフォルトの名無しさん [↓] :2007/11/14(水) 16:14:02

501

別に苦手ってほどのものでもないと思うが。

ちゃんとUnicodeに対応していて、それが使いにくいわけでもない。

個人的には、Javaよりは落ちる。Perlよりはマシ。という印象。

日本語文字列コード問題まとめ
http://python.matrix.jp/tips/string/encoding.html
Cygwin の Python と日本語
http://www.okisoft.co.jp/esc/cygwin-15a.html

文字コード自動判別 Edit

以下のライブラリがある。
判別精度がいいのは NkfPython だと思う。
Universal Encoding Detector は日本語以外、世界中の言語を扱う場合向け。

  • NkfPython
  • Universal Encoding Detector
  • ppkf

文字コード判定ライブラリ Universal Encoding Detector
http://www.python.jp/Zope/PyLog/1143645503
NkfPython - Ma2
http://city.plala.jp/moin/NkfPython
ppkfなんてのを作ってみました | SiteBites Blog
http://sitebites.homeip.net/blog/279

文字列中の変数展開 Edit

Ruby の↓のようなものは

a = "hoge"
b = 123
puts "a=#{a} b=#{b}"

Python では次のように書ける:

a = "hoge"
b = 123
print "a=%(a)s b=%(b)s" % locals()

HTTPサーバを作る Edit

たったこれだけのコードで簡単なHTTPサーバが作れる。

import BaseHTTPServer
import SimpleHTTPServer

server_address = ('', 8000)
httpd = BaseHTTPServer.HTTPServer(server_address, SimpleHTTPServer.SimpleHTTPRequestHandler)
httpd.serve_forever()

8000番ポートでカレントディレクトリをドキュメントルートとして待ち受けるので、

http://localhost:8000/

でアクセスできる。
さらにコマンドラインから

python -m SimpleHTTPServer

だけでも同じことになる。

Cの__LINE__相当 Edit

import sys, inspect
inspect.getframeinfo(sys._getframe()) 

他にも inspect.getframeinfo()などの関数がある。

オブジェクトをコピーする Edit

import copy
b = copy.copy(a)

リストのコピーなら

b = a[:]

でもできる。

モジュールがどこからインポートされたか知る Edit

import _curses
print _curses.__file__


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes