1 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 21:49:38 ] Python オフィシャルサイト www.python.org/ 日本Pythonユーザ会 www.python.jp/Zope/ FrontPage - Pythonのお勉強 python.rdy.jp/ 前スレ pc11.2ch.net/test/read.cgi/tech/1192884897/ ◆関連スレッド Microsoft IronPython 1.0 pc11.2ch.net/test/read.cgi/tech/1157686822/ Python の宿題ここで答えます Part 1 pc11.2ch.net/test/read.cgi/tech/1153585095/ 2ch検索: [python] find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python ◆関連サイト Python ドキュメント www.python.jp/doc/release/ Index of Python Enhancement Proposals (PEPs) www.python.org/dev/peps/ 参考サイト - Pythonのお勉強 python.rdy.jp/wiki.cgi?page=%BB%B2%B9%CD%A5%B5%A5%A4%A5%C8 .
751 名前:750 [2008/01/08(火) 11:51:45 ] >>750 です。 パソコン再起動したらできました。 Eclipse を 再起動してもできなかったのに。。。 スレ汚しごめんなさい
752 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 14:08:48 ] >>751 ランチャーとかから起動すると、 ランチャーが起動したときの環境変数しかみなかったりするよ。
753 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 15:20:14 ] ×ランチャー ○ローンチャ
754 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:04:52 ] >>753 △ゲンマイチャ
755 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:13:50 ] 燃えるお兄さん?コアすぎるだろ常考
756 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:16:17 ] >753 ◎launcher
757 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:04:00 ] Δ隠されし 禁断の ゲンマイチャ
758 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:18:25 ] >>752 ☆ラウンチャの男
759 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 04:50:25 ] ロケットローンチャ
760 名前:750 [2008/01/09(水) 07:23:53 ] >>752 それだ! ランチャ使ってます。 なるほど、以後気を付けます ありがと!
761 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 08:40:55 ] CでPythonの独自クラスを定義して、さらにそれを継承したクラスもCで記述する場合って、 継承とかどうやるの? ttp://www.python.jp/doc/release/ext/dnt-basics.html ttp://www.python.jp/doc/release/api/type-structs.html を見ながらやってるんだけど、継承して作る場合がいまいち良く分からない。 例えば、継承元クラスの構造体が typedef struct { PyObject_HEAD PyObject *first; PyObject *last; int number; } Noddy; だったとして、これを継承したクラスを作りたい場合は typedef struct { Noddy noddy; int mydata; } NoddyEx; でいいのかね? そのうえで、継承元 Noddy の PyTypeObject である noddy_NoddyType を noddy_NoddyExType の tp_base に指定すればいいんだよね。 ただその場合、 tp_alloc とかの実装はどうなるんだろうか。今のところゼロで初期化して 継承元の設定を使ってるけど、NoddyEx で新たに確保しなきゃならない項目がある場合に どう書いていいのかよくわからん。
762 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 08:47:14 ] あと、 def __init__(self, A, B=0, *args, *kwargs): SUPERCLASS.__init__(self, *args, **kwargs) ... に相当するコードをCで書く場合、*args と **kwargs の処理ってどうやってる? int b=0; PyObject* kw = PyDict_New(); PyDict_Update(kw, kwargs); PyObject* val = PyDict_GetItemString("B", kw); if (val) { b = PyInt_AsLong(val); PyDict_DelItemString(val); } て感じで、キーワード辞書のコピーを取っておいて、必要な値を pop してから 残骸を SUPERCLASS.__init__ (に相当するC関数)に渡す?
763 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 08:50:10 ] まちがえた PyObject* val = PyDict_GetItemString(kw, "B"); if (val) { b = PyInt_AsLong(val); PyDict_DelItemString(kw, "B"); }
764 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 09:20:42 ] ローンチャ・ストラトス
765 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 12:15:58 ] 質問失礼します。 def ptest( *a ): for b in a: print b, print "" 上記の関数呼び出しを、 ptest( "a=", 1, " b=", 2 ) ptest( "a=%d,%s" %( 1, "hoge" ) ) などではなく、通常のprint文のように、 ptest "a=", 1, " b=", 2 ptest "a=%d,%s" %( 1, "hoge" ) としたいのですが、どうしたら良いでしょうか? 分かる方お願いします。
766 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 12:29:52 ] できないよ。考え直すといいよ。
767 名前:デフォルトの名無しさん [2008/01/09(水) 12:49:54 ] ttp://gihyo.jp/dev/feature/01/python3000/0001
768 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 12:53:13 ] >>765 関数呼び出しと文はまったく別物。文は自分では作れない。
769 名前:765 mailto:sage [2008/01/09(水) 13:29:31 ] >>766 >>768 勉強になりました。 ありがとうございました。
770 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 13:32:44 ] >>761 boost.pythonじゃだめなの? d.hatena.ne.jp/niitsuma/20080108
771 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 16:58:23 ] >>765 ruby
772 名前:デフォルトの名無しさん [2008/01/10(木) 02:57:18 ] pythonにおける変数名等の標準的な命名規則って何ですか?
773 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:02:13 ] >>772 PEP 8 -- Style Guide for Python Code www.python.org/dev/peps/pep-0008/
774 名前:デフォルトの名無しさん [2008/01/10(木) 03:25:17 ] /bin/sh シェルのバッククォートを置き換える www.python.jp/doc/release/lib/node235.html これってshより複雑になってないですか? もっとシンプルに`command`を実現することはできないのでしょうか?
775 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:27:34 ] >>772 www.oldriver.org/python/pep-0008j.html
776 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:30:08 ] コマンドの出力を取りたいだけならcommands.getoutput('command')でいいんでない
777 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:37:06 ] >>776 こんなのあったんですね ありがとうございました
778 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 06:25:05 ] >>774 ttp://python.matrix.jp/tips/mini-tips.html >>> args = ['python', '-c', 'print raw_input()'] >>> from subprocess import Popen, PIPE >>> proc = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE) >>> proc.stdin.write('input text') >>> proc.stdin.close() >>> proc.wait() 0 >>> print proc.stdout.read() input text >>> print proc.stderr.read() >>>
779 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 06:28:48 ] より現実的な例ではこうなるでしょう: try: retcode = call("mycmd" + " myarg", shell=True) if retcode < 0: print >>sys.stderr, "子プロセスがシグナルによって中止されました", -retcode else: print >>sys.stderr, "子プロセスが終了コードを返しました", retcode except OSError, e: print >>sys.stderr, "実行に失敗しました:", e
780 名前:デフォルトの名無しさん [2008/01/10(木) 10:02:17 ] >>777 PEP 8を知らない奴がPythonやるなよ
781 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 10:34:43 ] >> 780 「愚かな一貫性は小人物に憑いたおばけである」
782 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 10:50:01 ] おばけ(wwwwwwwww 幼稚園児かよ(wwwwwwwwwwwwwwwwwwwwwwwwwwwww
783 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 10:57:02 ] おばけ。 おばけ怖いね。たしかに怖い。 愚かな一貫性を捨ててPerlをやることにするよ。
784 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 11:08:49 ] おばけより人間の方が怖い
785 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 11:12:54 ] まんじゅうもこわい。 ついでにお茶もこわいんだけど。
786 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 14:13:05 ] >>775 >プログラミングにおける推奨案 > - ソースコードは Python の実装(PyPy、Jython、IronPython、Pyrex、 > Psyco など)ごとの欠点を引き出さないように書くべきである。たとえば、 > CPython が a+=b や a=a+b などの文字列連結をインプレイス処理して、効 > 率よく動作する実装に依存してはならない。これでは Jython での動作が遅く > なってしまう。パフォーマンスに敏感な部分では、''.join() を使うべき > である。こう書いておけば、様々な実装において、連結処理は線形時間で > 処理できる。 PythonSpeed newworld.ddo.jp/doc/PythonSpeed 合わせて読みたい。
787 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 15:17:15 ] Pythonの文字列って不変だから、+=演算子の振る舞いはあくまで s = s + "hoge" s = s.add("hoge") であって s.add("hoge") では無いんだよな。 Pythonを始めたころは+=演算子ないのかよと思っていたら 仕様拡張されて文字列にも適用されたけど、 今になって思えば失敗な気がする。 (何で当時の俺はまんせーしてたんだか…)
788 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 16:01:26 ] >>782 別に幼児語じゃないぞ。
789 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 19:29:49 ] 問題はおばけではなく小人物の方だからな つまりどこに行っても同じ
790 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 21:22:38 ] はいはい。 おばけこわい。小人物こわい。
791 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 21:41:20 ] >>789 このねちっこさは小人物の仕業だろ常識的に考えて(wwwwww
792 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 22:22:58 ] >>786 PEP8の次にくるようにブックマークしたー って、setオブジェクトってなんだよ…(しょっぱなで躓く)
793 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 22:39:49 ] >>787 In Java, we had well known it's difference same as 'String / StringBuffer'.
794 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 22:59:28 ] 英語ダメな人キタコレwww
795 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:10:09 ] Would you please correct it?
796 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:34:39 ] とりあえず日本語でおk
797 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:38:47 ] どこから直して良いのかわかんないけど・・・ とりあえず過去完了は昔のある出来事以前のことをあらわすので そこを現在完了に変えて、ついでに時制の一致とかも考えて・・・ You'd know it as defference between String and StringBuffer in Java. ぐらいじゃないの?
798 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:39:28 ] It totally SUCK !!
799 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:40:41 ] sucksな。
800 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:46:24 ] 「愚かな一貫性は小人物に憑いたおばけである」
801 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:58:18 ] kinnnen mare ni miru kuso sure no nagare
802 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:05:30 ] >>801 典型的なクソレス
803 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 01:11:53 ] >「おろかな一貫性は、・・ 調べてたら元ネタがあった。 "A foolish consistency is the hobgoblin of little minds, adored by little statesmen and philosophers and divines. With consistency a great soul has simply nothing to do." - Ralph Waldo Emerson (愚かな一貫性というものはちっぽけな精神にひそむお化けで、ちっぽけな 政治家や哲学者や聖職者達に崇められるものだ。偉大なる魂は一貫性など とは全く無縁である。 - ラルフ・ワルド・エマソン) 割と有名な引用らしい。(知らんかったけど
804 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 04:42:52 ] 質問させて下さい python2.5+Vista環境でpywin32(Python for Windows extensions)を導入してみました ところが付属Demoを実行すると次のようなエラーが出ます Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\python25\lib\site-packages\pywin32-210.0004_s-py2.5-win32.egg\win32com\__init__.py", line 5, in <module> import win32api, sys, os ImportError: No module named win32api 3時間あれこれしてみたのですが一向に分かりません 包含関係はwin32api∈pywin32だと思うのですが・・・ 何か初歩的な設定ミスなどしているのでしょうか 原因の思い当たる方どうぞご教示願います
805 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 05:08:56 ] >>797 Thank you so much.
806 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 05:15:14 ] >>804 ttp://starship.python.net/crew/mhammond/win32/ For some overviews of the Win32 API as exposed to Python, see ttp://www.python.org/windows/win32/
807 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 05:18:10 ] ttp://www.python.org/download/windows/ Win32all, Mark Hammond's add-on for the regular Python installer (also including the Win32 API, COM support, and Pythonwin), is available from the pywin32 project on SourceForge. ttp://sourceforge.net/projects/pywin32/
808 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 06:35:50 ] >>804 eggの中身はzipだからpeなwin32api.pydは標準ではインポートできない setuptoolsもインポートの拡張してなかったと思うし というかそのeggファイルって非公式なものなんじゃ
809 名前:804 mailto:sage [2008/01/11(金) 10:54:55 ] >>806-808 egg排除してインストーラを使ってインストールし直したら できました! みんなありがとう!!! 大感謝です!!! 今回の件でeasy_installやeggの特性も少し分かったので スレタイ通り勉強になりました。今後も精進します。押忍
810 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:02:13 ] >>803 こっちのことわざで言えば 君子豹変す あたりのことかな。
811 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:31:57 ] Jinsei iro iro
812 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:46:35 ] URLをパースして分解してくれるようなライブラリはありますか。
813 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:48:22 ] 君子豹変す 小人面を革む (易経)
814 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:49:54 ] >>812 urlparse
815 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:57:39 ] で、結局怖いのは小人物なのか? それともおばけ(苦笑)なのか?
816 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 23:57:07 ] 馬鹿な突っ込みしちゃったのが心のささくれになってるのはわかるけど、 おばけにこだわってるのはもう君だけだから、無理に苦笑とかしても、ログ遡られて「ああこの子ね」となるだけかと。
817 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 00:04:31 ] >>816 小人物乙(ww
818 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 01:22:01 ] 即レスw
819 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 01:34:38 ] 子供は寝ろよ
820 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 02:38:16 ] 小人閑居して不善を為す
821 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 02:49:09 ] 馬鹿の考え休むに似たり
822 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 03:29:59 ] 生兵法は怪我の元
823 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 06:34:36 ] journal.mycom.co.jp/news/2008/01/08/045/ JythonでDjangoが動いたようです。
824 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 07:16:04 ] >より最新のバージョンに対応したJythonの登場はそうとおい未来の話ではなさそうだ。 あと1年くらいか
825 名前:デフォルトの名無しさん [2008/01/12(土) 12:18:35 ] 花よりだんご
826 名前:デフォルトの名無しさん [2008/01/12(土) 15:26:24 ] 花よりだんごより金
827 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 15:41:16 ] それにつけても金の欲しさよ
828 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 16:41:28 ] 談合三兄弟
829 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2008/01/12(土) 16:51:25 ]
830 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:02:35 ] Py3.0では set がリテラル表記できると聞きましたが。。。。。。。 あたらしい文法増えるってことかい?
831 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 23:52:32 ] >>830 {'増', 'え', 'る', 'よ'} {i for i in 'さらに、setとdictの'} {k: v for k, v in enumarate('内包表記も。')}
832 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 01:42:26 ] pypyっていいね
833 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 02:38:35 ] {} を 空dict にするか 空set にするかという議論もあったようだけど、空dict になったらしい。 個人的には 空set の方がよかった。
834 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 07:48:25 ] >>833 無意味に後方互換性を崩すあんたのセンスを疑う。
835 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 08:31:58 ] >>831 Yさん、ご苦労様です
836 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 10:12:27 ] >>835 Yさんて誰よ >>833-834 {} == set() {:} == dict() が自然じゃないかなぁ、と思ってた 確かに後方互換性がネックなんだけどね
837 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 11:56:25 ] pythonって、dictの要素を繰り返すのに for k, v in dct.iteritems(): print k, v としますけど、なんで for k, v in dct: print k, v でできるようにしなかったんでしょう? for v in dct: print v としたら、キーが表示されました。 どうせなら、next()で(k, v)が返されればいいのに。
838 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 13:15:05 ] for k, v in dct.items(): print k, v
839 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 14:41:03 ] for k in dct: print k, dct[k] じゃだめなんか
840 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 14:55:21 ] if k in dict: ....との一貫性のため、 だと思ってたけど。
841 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 16:41:24 ] >>840 あ、そう、それだ、 そういうのを Guido は、if k in dict と for k in dict がライムする(韻を踏む(?))と表現しているね。 mail.python.org/pipermail/python-3000/2007-September/010222.html
842 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 16:42:28 ] Pythonの開発環境はIDLEで充分ですか? まだPythonは初心者ですが
843 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:08:30 ] 学習段階ならぶっちゃけメモ帳でも
844 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:14:30 ] いやさすがにメモ帳は 最低でも複数行をまとめてインデントしたり コメントアウトできるエディターは必要
845 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:47:11 ] >>843-844 ありがとうございます 探してみます
846 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:29:17 ] pythonで入力フォームを作っているのですが、 入力値のチェックで全角のみ許可する場合は どのようにすればいいのでしょうか? 正規表現でどのように書けばいいのでしょう? お願いします
847 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:37:26 ] 文字コード総合スレ part3 ttp://pc11.2ch.net/test/read.cgi/tech/1180250376/
848 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 19:09:38 ] >>846 正規表現ライブラリの動作をかんがえると 簡潔にできないなら別に正規表現にする必要はないかと。 Unicodeに統一させるのは前提として 文字単位で確認するようなコードをこさえればいいと思う。 速度求めるようなもんでもなさそうだし。
849 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:27:29 ] $KCODE = 'SJIS' dat = ['Alpha', 'ひらがな', '漢字', 'カタカナ', '0123', 'ねこ大好き'] dat.each{ |str| p str case str when /^[A-z]+$/s p 'アルファベットのみ' when /^[0-9]+$/s p '数字のみ' when /^[あ-ん]+$/s p 'ひらがなのみ' when /^[ア-ン]+$/s p 'カタカナのみ' when /^[亜-煕]+$/s p '漢字のみ' else p '混合か全角英数字か記号' end }
850 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:33:46 ] 先生、ここはPythonスレです・・・
851 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:41:43 ] UNICODEにしたときも ^[亜-煕]+$ って保証されるんかいな?
852 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:22:29 ] 「半角のみ」禁止なら割と簡単だけど・・・
853 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:23:01 ] unicodedataつかいなよ
854 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:50:41 ] >>851 UNICODEなら、漢字全部って意味でそれ書いちゃ間違い
855 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:56:46 ] UNICODE(UCS-2)の文字コード順で書かないとな 漢字(統合漢字とExt.Aだけ)はこうか r'^[\u4E00-\u9FBB\u3400-\u4DB5]+$'
856 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:32:08 ] >>> unicodedata.east_asian_width(u'A') # 全角のA 'F' >>> unicodedata.east_asian_width(u'ア') # 半角のア 'H' >>> unicodedata.east_asian_width(u'あ') 'W' >>> unicodedata.east_asian_width(u'A') # ASCII のA 'Na' >>> unicodedata.east_asian_width(u'W') 'A' >>> unicodedata.east_asian_width(u'\u0E20') # タイ語の文字 'N' ttp://0xcc.net/blog/archives/000191.html
857 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:48:22 ] ……「半角が混じってたらNG」 というロジックにしちゃえというのは禁句だろうか
858 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 00:03:10 ] 2バイト半角もあるからな
859 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 04:39:57 ] もう全部UTF-32でいいよもう
860 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 09:28:22 ] 禁止にするとかじゃなくて 内部でお好みの全角のみか何かに正規化するのが定石じゃん? 全角のみでおねがいします、の入力フォームを見るたびに 殴りたくなるぜ
861 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 10:53:30 ] 俺も正規化すればいいと思う。
862 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:55:16 ] >>846 一旦EUC-JPかShift_JISにしてASCIIの範囲の文字とそれ以外に分ければいいと思う。
863 名前:862 mailto:sage [2008/01/14(月) 13:42:18 ] # -*- coding: utf-8 -*- def is_zenkaku(s): assert isinstance(s, unicode) try: s = s.encode("euc-jp") except UnicodeError: return False i = 0 while i < len(s): if s[i] < '\x80': # ASCII return False elif s[i] == '\x8e': # JIS X 0201 Katakana return False elif s[i] == '\x8f': # JIS X 0212 Supplementary Kanji i = i + 3 else: # JIS X 0208 i = i + 2 return True
864 名前:863の続き mailto:sage [2008/01/14(月) 13:43:21 ] if __name__ == "__main__": assert is_zenkaku(u"日本語") == True assert is_zenkaku(u"Kanji") == False assert is_zenkaku(u"Kanji") == True assert is_zenkaku(u"12345") == False assert is_zenkaku(u"12345") == True assert is_zenkaku(u"パイソン") == False assert is_zenkaku(u"パイソン") == True assert is_zenkaku(u"森\u9dd7外") == True assert is_zenkaku(u"Espa\u00f1ol") == False assert is_zenkaku(u"Россия") == True assert is_zenkaku(u"Αθηνα") == True assert is_zenkaku(u"(・∀・)イイ!") == True assert is_zenkaku(u"(・A・)イクナイ!") == False
865 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:26:52 ] >>849 rubyってそんな面倒なことしないと分けれないのかよwww >>863 そんな面倒なことせずに east_asian_width使えばいいだろ
866 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:08:51 ] >>865 ソースに問題点あるみたいなのでそっちの方が面倒そう<east_asian_width d.hatena.ne.jp/methane/20070109/1168316594
867 名前:methane mailto:sage [2008/01/14(月) 19:27:05 ] >>866 それはdocutilsの中でeast_asian_width()の結果をどう扱ってるかって話。 日本限定で使う分にはこんな感じで良いと思う。 def char_width(s): if type(s) == 'str': s = unicode(s) return 2 if east_asian_width(s) in 'WFA' else 1
868 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:41:43 ] なるほど・・
869 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:51:10 ] >>866 それは、現在の実装がblogの人の想定と違ってるってだけでそ。 そこにある修正したら、\u00A1(INVERTED EXCLAMATION MARK)とかもWide&Full-widthと同じ扱いされてまうやん。
870 名前:methane mailto:sage [2008/01/14(月) 20:53:09 ] スマン、east_asian_width() == 'A' の文字ってCJK圏では全部Wide文字扱いかと思ってた。 >>867 のも、'A'を入れるか入れないかは微妙なんだな。
871 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:12:40 ] A - East Asian Ambiguous Ambiguous : あいまい(な) なわけで。 ttp://www.unicode.org/reports/tr11/tr11.h1.gif
872 名前:methane mailto:sage [2008/01/14(月) 21:18:31 ] いや、A=Ambigious=「あいまい」は知ってたけど、 CJK圏ではWide、それ以外ではNarrow、という意味で「あいまい」だと思ってた。 Unicodeメンドイな。
873 名前:862 mailto:sage [2008/01/14(月) 21:21:25 ] >>865 へー、unicodedata.east_asian_width() なんてあるんだ。知らんかった。Thanx
874 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:03:15 ] Rubyのgets.to_iにあたる、数値入力を取得する命令ってどう書いたらいいんでしょうか?
875 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:37:06 ] 数値計算libでnumarray numpyとか似たようなのが複数あるけど どれが一番いいの?
876 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:02:47 ] >>874 try: a = input() except NameError: a = 0
877 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:09:30 ] >>876 その発想は無かった。
878 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:16:05 ] >>874 import sys x = int(sys.stdin.readline()) impoすらメンドいならint(raw_input())
879 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:26:31 ] >>876 >>878 ありがとうございました。
880 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 13:37:12 ] 自鯖でpythonを動かし、rssなんかを取得したいのですが、 cgiからurllibでgetするとソケットエラーになります。 pythonを起動してやれば、普通に取得できます。 分かる方いたらお願いします。 OS : CentOS release 5 (Final) Server : Apache/2.2.3 python : 2.4.3
881 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 15:26:14 ] >>880 > urllibでgetするとソケットエラーになります。 「ソケットエラー」なんてエラー出力にはならないと思うし 勝手な省略したらわかるものもわからなくなるよ? その環境にはないけどオチとしてはSELinuxが働いている、かな。
882 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:11:03 ] >>881 動きました。ありがとうございます。 エラー文見て、適当に略してしまいました、すいません。 IOError: [Errno socket error] (-3, 'Temporary failure in name resolution')
883 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:34:40 ] frobnicate - Google 検索 www.google.co.jp/search?q=frobnicate&hl=ja&lr=lang_ja&start=20&sa=N 質問 frobnicateってどういう意味ですか?
884 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:50:24 ] >>883 その検索結果のROT13の頁を見よ
885 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:01:23 ] >>884 ROT13 - Wikipedia ja.wikipedia.org/wiki/ROT13 >このルーチンはROT13と同じ目的で用いられるが、任意の二進データに利用可能である >(ユーモアをこめて、「意味不明化」(en:frobnicate)関数と呼ばれる)。このルーチンではデータの >各8-bitバイトをとり、二進数の00101010(十進表記では42。人生、宇宙、すべての答え参照)と >の間のビット毎の排他的論理和 (XOR) を計算する ですね Re: [Python-Dev] Replacement for print in Python 3.0 :: ASPN Mail Archive :: python-dev aspn.activestate.com/ASPN/Mail/Message/python-dev/2808632 >printf('$1 forgot to frobnicate the $2!\n', username, file.name, > to=sys.stderr) >While that's a little less self-descriptive for a translator to deal >with (who would only see the string, not the call site), it certainly >looks nicer for a non-i18n application, and could certainly work for an >i18n app too. It's a neat idea worth exploring. 意味不明化する、いう使い方をするみたいですね dくす
886 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:39:21 ] >> I request the addition of prod(): >> >> def prod(seq): >> s = 1 >> for x in seq: >> s *= x >> >> prod is always as useful as sum() > >It would have to be called product(), and I believe it has been proposed >multiple times and been rejected under the "not every 3-line function >has to be builtin" rule. そんなルール在ったんだw
887 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 00:46:04 ] set に含まれる要素うち、2つを取り出して比較ってのを全組み合わせについて やりたいんだけど、効率よく処理するにはどうすればいいだろう。 最初に思いたのは s = set([.........]) として seq = tuple(s) for i in range(len(seq)-1): for j in range(1, len(seq)): my_cmp(seq[i], seq[j]) なんだけど、すごい遠回りして処理してる気がする。 意外とベタに [my_cmp(i, j) for i in seq: for j in seq] ってインラインぽくやった方が早いのかな。ちなみに my_cmp での比較順番は関係なし。(交換法則が成り立つ) これを C で実装できればなおいいんだけど C-APIには集合オブジェクトの処理がないんだよね。。。
888 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 01:08:04 ] for x in list(s): s.remove(x) for y in s: my_cmp(x, y)
889 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:27:57 ] 効率よく、という趣旨からは外れるかもしれないけど、 aspn.activestate.com/ASPN/Cookbook/Python/Recipe/474124 の下の方のやつを使えば、 for p in comb(list(s), 2): my_cmp(*p) とすっきり書ける。
890 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:41:58 ] ls = list(s) for i in ls[:-2]: for j in ls[1:]: my_cmp(i, j)
891 名前:デフォルトの名無しさん [2008/01/17(木) 17:57:12 ] 総当たりになってないw
892 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 03:10:51 ] www.python.org/dev/peps/pep-0370/ 面倒臭そうだ
893 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:05:26 ] ${HOME}/bin ${HOME}/lib/python2.5 ${HOME}/share 俺は↑みたいにやってパスを通している。 /usr/local = ${HOME} の位置づけ ${HOME}/.local/lib/python2.6 わざわざ隠さなくてもいいよ。 存在を忘れそうだ。 タイプも面倒くさいし。
894 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 21:21:23 ] 半角と全角が混じった文字列を途中から改行するには どうすればいいですか?
895 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:45:40 ] unicode に変換したら
896 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:15:20 ] 禁則処理のことを云って居るのか?
897 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:34:09 ] この質問にちゃんと答えられたら その人はPGじゃなくてエスパーだろ。
898 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:57:27 ] マルチバイト文字が入ってる文字列に改行を挿入したら泣き別れが 起きてしまうんですがどうしたらいいですか、なのかなぁ
899 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:38:32 ] 半角と全角とか言ってるからそこらへんかも つ Unicode 文字列
900 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 06:26:07 ] lxmlの最新バージョンのwindows用インストーラーがないんだけど
901 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 11:00:18 ] あんたRubyにいいたいことがあるんじゃないんですか? とくにPythonと比べてみて。 ttp://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Bruce+Eckel%A4%CE%A1%D6Ruby%A4%CB%A5%A4%A5%A4%A5%BF%A5%A4%A5%B3%A5%C8%A1%D7%A5%B3%A1%BC%A5%CA%A1%BC
902 名前:デフォルトの名無しさん [2008/01/19(土) 13:40:00 ] 他の言語なんて放っておけ
903 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:00:57 ] Pythonの勉強をしにきました!
904 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:02:35 ] やっぱやめた!
905 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:17:47 ] >903 あきらめ早すぎ。
906 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:30:12 ] Pythonチュートリアル重要だねえ print時の文字フォーマットは辞書を使って >>>fuga = {'hoge':'doutei'} >>>print("%(hoge)s" % fuga) >>>doutei ができることを知ったよ。恥ずかしいのですべて読み切る。
907 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:31:03 ] なんでprintに()つけるん?
908 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:31:51 ] >>907 Python3000から付けるようになるとのことで、 今のうちから括弧付ける癖付けてる
909 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:40:02 ] print("%(hoge)s" % (fuga,)) が正しい
910 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:55:33 ] >>907 かっこつかないだろ 後悔はしていない
911 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:56:37 ] >>909 Traceback (most recent call last): File "<pyshell#909>", line 1, in <module> print("%(hoge)s" % (fuga,)) TypeError: format requires a mapping 適当なことを言うのはやめるんだ
912 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:20:07 ] ( "ヮ")
913 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:37:41 ] import string print string.Template('$hoge').substitute(fuga) というのも一応ある
914 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:57:31 ] slashdot.jp/articles/08/01/18/070215.shtml
915 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 02:24:27 ] ただいまメンテナンス中です Slashdot Japan は現在メンテナンスを行っております。 ご迷惑をおかけして、誠に申し訳ございません。 しばらく後にもう一度アクセス頂けますよう、お願い申し上げます。
916 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 03:01:44 ] メンテ終わったよ
917 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 03:02:55 ] >>906 >>> hoge = 'doutei' >>> print '%(hoge)s' % locals() doutei こんな技もあるから覚えておくといいよチェリーボーイ
918 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 14:50:00 ] >>916 39
919 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 16:12:47 ] もう伸びないってさ
920 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:10:47 ] >>917 どもども
921 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:08:28 ] 今日からPython始めようと思うのだけれど まずはチュートリアルを読めばいいのかな?
922 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:25:12 ] 多言語を知っているのなら でもそんな人はそんな質問しないだろうな
923 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:10:31 ] >>919 そうそう。Pythonはもう伸びない。 だからこんなに便利なプログラミング言語を使わなくていいよ。 今すぐ別の言語に移ってくれていいよ。
924 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:14:57 ] >>923 今の所、今年のキモレスNo1
925 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:16:44 ] >>924 もうPythonから離れていいよ。 100000万キロくらい離れていいよ。 むしろ二度と近寄らなくていいから。
926 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:18:29 ] >>925 子供はプログラミングじゃなくてお勉強してろ
927 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:31:54 ] 暗いと不平を言うよりも、すすんであかりをつけましょう
928 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:41:06 ] >>926 日本語も満足にできない低脳はPythonを使わない方がいいよ。
929 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:46:07 ] 100000万キロなんて今時小学生でも使わないだろ・・・
930 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:55:53 ] >921 チュートリアルよりお気楽 Python プログラミング入門ってのがいいと思うんだ
931 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:57:34 ] ガリレイの相対性原理も、アインシュタインの相対性理論も 破棄されました。! 21世紀の科学、物理学は支配の法則が支配する!!!!! home9.highway.ne.jp/cym10262/fenomina.html
932 名前:デフォルトの名無しさん [2008/01/21(月) 04:32:37 ] 初心者講座作れ!
933 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 06:32:20 ] すいません。質問させてください。 Pythonの拡張とかフレームワークみたいなのを使わないで、 jspやerbみたいにhtmlにコードを埋め込むことはできますか? テーブル作るときにレコードを一行ずつprintするのが嫌で、 配列をhtmlに渡して、レコードの数だけ埋め込んだコードでループさせたいと考えています。 まだ勉強し始めたばかりで、パイソン流の方法がわからず苦労しています。 よろしくお願いします。
934 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 08:25:44 ] テンプレート
935 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 09:35:44 ] >>933 テンプレートエンジンをつかいましょう。 Rubyと違って、PythonにはERBみたいなのは付属しないので、自分でインストールする必要があります。 ERBみたいなのでよければ、MakoやTenjinあたりが高速です。 www.kuwata-lab.com/tenjin/ に各種テンプレートエンジンへのリンクとベンチマークがあります。
936 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 20:27:54 ] >>935 やっぱり何かをインストールしないとできないのですね。 紹介していただいたTenjinを使ってみました。 欲しかった使い勝手は、まさにコレでした。 使うときもtenjin.pyだけあれば管理者でサーバーにインストールする必要もないですし、 Tenjinを使っていこうと思います。 良いアドバイスをいただき、ありがとうございました。