1 名前:デフォルトの名無しさん [2008/04/29(火) 23:47:08 ] Python オフィシャルサイト ttp://www.python.org/ ttp://www.python.org/doc/ 日本Pythonユーザ会 ttp://www.python.jp/Zope/ ttp://www.python.jp/doc/ FrontPage - Pythonのお勉強 ttp://python.rdy.jp/ 前スレ pc11.2ch.net/test/read.cgi/tech/1206876081/ ◆関連スレッド Microsoft IronPython 1.0 pc11.2ch.net/test/read.cgi/tech/1157686822/ Python の宿題ここで答えます Part 1 pc11.2ch.net/test/read.cgi/tech/1153585095/ Python Challengeをやろう! pc11.2ch.net/test/read.cgi/tech/1175919288/ Pythonについて(アンチ専用) pc11.2ch.net/test/read.cgi/tech/1203557046/ Pythonに見られるインデントによる制御構造の是非 pc11.2ch.net/test/read.cgi/tech/1169473442/ pythonがこの先生きのこるには pc11.2ch.net/test/read.cgi/tech/1167996371/ Eclipse統合M24【Java/C/PHP/Ruby/Python/Perl】(PyDev) pc11.2ch.net/test/read.cgi/tech/1200918324/ 【Perl,PHP】LLバトルロワイヤル2【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1209289408/ デザパタ + Python/Ruby/Smalltalk part2 pc11.2ch.net/test/read.cgi/tech/1175959706/ 2ch検索: [python] find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
369 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:21:18 ] >>> def foo(&x): x = 2 SyntaxError: invalid syntax ついに嘘書く奴が出てきたよ
370 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:30:59 ] >>365 def foo(x): ↑ここのxには確かにa = 1と同一の1が渡る。 x = 2 ↑でもこれはその1を2に置き換えるのではなく xの参照先を2に変更することになるのでaは1のまま。
371 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:31:48 ] >>365 Pythonで数字はイデア界にあるから 書き換え不能なんですよ。
372 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:33:56 ] >>369 嘘を嘘と見抜く練習をしような(w
373 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:49:35 ] つまり = は代入ではなく束縛ってことか ところで >>> lst = [0] >>> lst[0] = lst >>> lst [[..]] >>> def p(x): print x >>> [p(x) for x in lst] [[..]] [None] なんぞこれ
374 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:55:14 ] 循環参照は[...]になるのか。賢いな。
375 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 18:42:18 ] >>370-371 えーと、本当に参照渡しの意味わかってんの? fooの仮引数がxと宣言されているが、aを渡したときにそのxがaのエイリアスとして 機能する(つまりxがaと同等である)ようなものが参照渡しなんだが。 FORTRANはデフォで参照渡しだし、C++やC#は参照渡しもサポートする。 Pythonの場合、a, xは同一のオブジェクトを指している*別変数*だから、 xへの代入はaに影響を与えない。 そういうのは参照渡しとはいえないでしょ。
376 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:00:23 ] >>365 引数そのものはimmutable(不変)なので、関数内で書き換え不可。 この場合の引数とは、変数のアドレスのこと。 変数が指しているデータを書き換えたい場合は、例えば以下のように出来る。 def bar(x):x[0] = 2 a = [1,2,3] bar(a) print a # --> [2, 2, 3]
377 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:14:55 ] ミュータブルorイミュータブルというのはオブジェクトの特性であって 変数の特性ではない
378 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:15:06 ] そもそもPythonのオブジェクトには代入演算子ないし
379 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:36:17 ] Mr.NishioのJython本を読むと、変数はオブジェクトへのリファレンス貼る ってことが書いてある。 買って読んでみなよ。
380 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:01:56 ] > 変数はオブジェクトへのリファレンス貼る 俺の頭が弱いのか? 何が言いたいのかわからん
381 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:05:15 ] C風に言えば、Pythonの変数はオブジェクトへのポインタ 代入はポインタのコピー 関数呼び出しは全部値渡し Javaも値型(基本データ型)以外は一緒
382 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:12:01 ] >>360 > 関数の引数って参照渡しなの? 違います。 www.python.org/doc/faq/programming/#how-do-i-write-a-function-with-output-parameters-call-by-reference > Remember that arguments are passed by assignment in Python. Since assignment just creates references to objects, > there's no alias between an argument name in the caller and callee, and so no call-by-reference per se. (引数は Python でいうところの代入によって渡されることを思い出して下さい。代入は単にオブジェクトへの参照を作るものなので、 呼び出す側の引数名と呼び出された側の引数名のあいだにはエイリアスはなく、「参照による呼び出し」も本質的に存在しません。)
383 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:44:09 ] 渡す物がlistになると挙動が変わるはず
384 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:47:37 ] >>383 リストだろうが何だろうが、何も変わらない。 >>> def f(x): x = [1,2,3] ... >>> a = [] >>> f(a) >>> a [] >>>
385 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:58:26 ] >>> m = [] >>> def a(x): x.append(3) >>> a(m) >>> a(m) >>> m [3, 3] これは何が起きているんだ? 俺の頭が弱いのか? 何が言いたいのかわからん
386 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:59:18 ] >>385 リストだろうが何だろうが、何も変わらない。 >>> def f(&x): x = [1,2,3] ... >>> a = [] >>> f(a) >>> a [1,2,3] >>>
387 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:04:59 ] Pythonを学ぼうと思うのですが python.rdy.jp/wiki.cgi?page=%B4%D8%CF%A2%BF%DE%BD%F1 で何を選べばいいのかわかりません。
388 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:06:34 ] 他言語経験は?
389 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:09:35 ] >>385 頭が弱いんじゃなくて、基本が理解できてない。 一体どんな教材でPython覚えたんだよ?
390 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:14:55 ] >>385 >>384 の例は、代入によって「変数自体」を変更している 変数の変更とは、変数が持っていたオブジェクトへの参照を破棄し、 別のオブジェクトを指すようにする、ということだ >>385 の例は、破壊的メソッドによって、変数によって指されている 「オブジェクトの中身」を変更している。変数自体は何も書き換わっていない
391 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:25:40 ] >>388 初めてのC#を読みました。 作ったソフトウェアは2つほどでオブジェクト指向はある程度理解しているつもりです。
392 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:26:09 ] >>387 名著だ www.amazon.co.jp/dp/4839922829/
393 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:26:37 ] >>392 ありがとうございます。
394 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:28:18 ] >>392 表紙でtypoが名著とはこれ如何に
395 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:31:19 ] ほんとだ噴いた
396 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:34:29 ] >>392 家宝にさせていただきます
397 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:45:04 ] >>391 プログラミング経験有りなら書籍ではないけれど 本家のチュートリアルの邦訳をまず読んでみれば www.python.jp/doc/release/tut/
398 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:45:52 ] x = 23 はxのポインタの値が書き換わる。 x.append(3) はポインタの先の値が書き換わる。
399 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:51:39 ] >>376 と>>384 の挙動の違いがよくわからない
400 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:54:11 ] >>399 >>376 もポインタが指しているオブジェクトの中身を書き換えているだけだ xとaは別の変数だが同じオブジェクト(リスト)を指しているから、 x経由で変更したオブジェクトをaから参照しても 同じように見えるのは当たり前だ
401 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:02:28 ] >>400 >>384 の場合はx=[1,2,3]で新たにリストのオブジェクトを生成して、 変数xはそれを指すから、結果的に変数aの指すオブジェクトの中身は 書き換えられなかったってことでいいのかな?
402 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:04:21 ] >>401 うん
403 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:15:12 ] なるほど、スッとした。さんくす。
404 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:29:50 ] やっぱりスッとしない。
405 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:02:10 ] >>392 Amazonって、ランキングが出るじゃん。見たんだけどさ。 この時期でこのランキングはないわ。 名著なのに売れないなんておかしいな。 芸術作品ですか。
406 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:12:37 ] >>70 のリンクの人から見ると名著なんだよ
407 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:20:13 ] >>70 のリンクの人のせいで売れないんじゃね? まるで逆宣伝だし。
408 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:27:14 ] そもそも対象となる層が少なすぎる感じがする
409 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:28:39 ] 日本人限定だしね
410 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:39:27 ] そのうえ変な人に気に入られてるようじゃ相当マイナスだね。
411 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 01:00:29 ] Jython使うとPOIも使えると思うのですが CPythonからPOIを使えるようにはできませんか?
412 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 01:08:00 ] Java使え
413 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 01:10:44 ] 替わりにwin32comかpyExceleratorを使うとか
414 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 02:00:14 ] win32comもpyExceleratorは使ったことがあるのですが どっちもいまいちなのでPOIを使いたいんですけど Javaは使いたくないんです
415 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 02:30:37 ] GroovyとJRubyやるからどっかいけ
416 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 02:33:37 ] >414 ならばCPythonでJava classファイルを使えるようにする仕掛けをこさえるしかなかろ それって結局JavaVMの特殊な独自実装になるような気もするが。 となると「Javaを使わない」という目的からは厳密には外れるな。 あるいはPure PythonでPOIを書き直すとか
417 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 02:50:31 ] そうですね そうします
418 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 03:46:21 ] 死ねばいいよ
419 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 04:20:22 ] 死ねって・・・ Pythonの信者の人が反社会的っていうのはほんとなんですね
420 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 08:00:56 ] Jython本を読むと心が洗われます
421 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 09:01:36 ] >>406 これはむしろ愛と呼べる代物だ。 温泉ではアッー!な光景が繰り広げられるに違いない。
422 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 11:30:56 ] >>421 結論から言うと、今回のRuby Kaigiのテーマは"愛"。 : Ruby愛以外に何か付け加えるものがあるとするならば、あとは、覚悟。
423 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 11:44:02 ] イケメンハッカーはJRubyの本を出せばよかったんじゃね?
424 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:12:48 ] Pythonソースコード完全解説とかなら普通に読みたいな
425 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:14:46 ] 自分でコードも読めない奴は、技術者としては失格だと思うがな。
426 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 14:17:31 ] neet山
427 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 14:32:01 ] RubyConsortium Rubycon 不良品乱発
428 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 03:50:04 ] 会社で作るソフトに組み込むスクリプトとしてぜひ Python を押したいんだけど、 「(スクリプトの)逆アセンブルがすげー簡単ぽいけど、どうなのよ」みたいなこと言われたんだ。 そういうわけで、会社を納得させるべく、「思いつきでちょっと解析したぐらいでは分からない程度」 に Python スクリプトの難読化について考えてみたい。
429 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 04:01:50 ] (自分がパッと思いつく程度の)スクリプトの解析方法に付いて考えてみる。 A. python スクリプトファイルが丸見えの場合 .py ソースは問題外。 .pyc は dis モジュールに食わせてダンプして終了。しかもドキュメンテーション文字列付き。 .pyo も dis モジュールに食わせて終了。 B. スクリプトファイルが見えない場合 Python##.dll を改造してアプリケーション付属のDLLと差し替えて、 インポートしたモジュールのコードオブジェクトをダンプするなり別ファイルに書き出すなりする C.コンパイル済みモジュールファイルが丸見えだが、dis に食わせても解析失敗する場合 カスタム Python を使用している事を疑う. アプリケーション付属の Python##.dll を参照するようにして python.exe を実行し、 自作のスクリプトを pyc に変換させ、純正の pyc と比べてみる。
430 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 04:17:33 ] そう考えると、 •独自のインポータを sys.path_hooks に組み込んで自作アーカイブからスクリプトファイルを読み出すようにする •独自アーカイブに含まれているスクリプトは、カスタム Python を使って読み書きするための特殊 pyc •カスタムといっても、ようは pyc の読み書き部分だけつじつまを合わせれば良い •従って、改造するのは marshal.c あたり?
431 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 05:37:37 ] >>428 「解析されて何か問題でも?」と答えておけ。 本当に解析されて困るプログラムなんて、この世にそれほど存在しないだろ。
432 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 11:39:00 ] GPL
433 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 11:49:46 ] JavaだってC#(IL)だって逆コンパイラは存在してるし 難読化とかもあるけど、最終的には>>431 のような気がする
434 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:15:57 ] 事情をよく知らない割には権限だけ持っていて、 変化を嫌いたがるダメ官吏みたいな上司を説得するのが一番大変なんだよね〜。
435 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:16:05 ] pyc や pyo はバイナリエディタで開いただけでも識別子名と関数名がまるわかりだからねえ 簡単な難読化ぐらいならやる価値あると思う
436 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 13:34:43 ] 難読化とかwww馬鹿だろwww 死ねばいいのに
437 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:17:07 ] 簡単な難読化をしてみせるだけで>428の仕事が楽になるならいいじゃないか。 それ自体に意味があるかどうかはどうでもいいのだ。
438 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:19:55 ] マってたまに、子供騙しで騙してしまえばいい相手の要求に対して、 妙に本気になって対処してしまうことがあるよね。自戒も含めてw
439 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:46:15 ] 全て eval を使って文として 他のプログラムに仕込むとか
440 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:07:12 ] 子供騙しで手を抜く奴はプログラマだ! バレないように手を抜く奴は訓練されたプログラマだ! こうですか? わかりません (>_<)
441 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:29:23 ] >>434 そういうときはその上司の上司を説得するべき
442 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:44:24 ] 適当にxorして「暗号化しました!」 とか言っとけば大丈夫
443 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:47:10 ] ソースコード自身とxorしたから大丈夫です!
444 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 01:11:01 ] >>443 0x00とXORしないとダメだよ!!
445 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 02:15:01 ] ネタならネタで良いんですが もう少し楽しめるのをおながいします
446 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 02:44:30 ] pygameで英語分からなくて暴れてる厨房だろ 放っとけよ
447 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 08:11:47 ] pygameの和訳さっさと進めろよハゲども
448 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 08:45:46 ] 自己解決しました。
449 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 09:17:04 ] やめてください
450 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:14:11 ] イケメンハッカーが自決しました。
451 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:33:08 ] やめてください。
452 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:33:59 ] 自己解決禁止
453 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:34:36 ] >>441 お花畑にお住まいの妖精さんですか? 現実は厳しいですよ。
454 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:35:08 ] neet山が自己休刊やめてください。
455 名前:360 mailto:sage [2008/05/23(金) 10:59:40 ] >>360 >>> def call(): info=[]; f(info); return info ... >>> def f(x): x=[1,2,3] # list渡したい時は.append使え矢 ... >>> call() [] >>> >>> def call(): info={}; f(info); return info ... >>> def f(x): x[0]=1; x[1]=2; x[2]=3 ... >>> call() {0: 1, 1: 2, 2: 3} 渡すものが、辞書かリストか、で字面的に違うということですね 事故解決しました。(&なんて使わねー)(*はリスト**は辞書ですが無くても動くのです無害です)
456 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 11:07:57 ] >455 ぜんぜん解決してない ... >>> def f(x): x=[1,2,3] に文法的に対応する辞書の記述は >>> def f(x): x = {0:1, 1:2, 2:3} だよ(これだと結果は callで代入された info → {} のまま)。 リストのappendが字面的に気に喰わないのなら、 x+=[1];x+=[2];x+=[3]; と書いてもいいかもね(ちょっとoverheadありそうな気もするけど)
457 名前:360 mailto:sage [2008/05/23(金) 11:30:33 ] >>456 d 1. def call(*各種設定リスト): info={}; f(info); return 2. 初期化関数もどき(空リスト、空辞書を破壊的操作で初期化) def f(x): x[0]=1; x[1]=1; x[2]=2 #辞書 def f(x): x+=[1]; x+=[2]; x+=[3] #リスト 設定ファイルちっくに扱うなら、辞書使うし余り気にならないのかも > リストの破壊的操作 JSonとか、いい感じなものだと最近わかり始めてきますた
458 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 12:07:53 ] 自己解決禁止しちゃいかんだろww
459 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:11:33 ] D:\TracLight\python>python Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> fn = os.path.join('./', 'test-file.txt') >>> open(fn).read() Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 2] No such file or directory: './test-file.txt' 同じディレクトリ下にあるファイルを読むにはどう書けば良いですか?
460 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:19:24 ] >>> fn = os.path.join(os.getcwd(), 'test-file.txt') >>> fn = os.path.join('./', 'test-file.txt') >>> open(fn).read() .txt 拡張子が余計に付いてだけでした orz 事故レスすまそ
461 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 17:41:49 ] >>459 なんでバグだらけの旧バージョン使ってるんだ?
462 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:29:52 ] うるさいだまれ
463 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:36:57 ] 自己憤慨しました。
464 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:15:47 ] 自己発電しました。
465 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:41:04 ] 助けて java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM.0) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkExit(Unknown Source) at javax.swing.JFrame.setDefaultCloseOperation(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.python.core.PyReflectedFunction.__call__(Unknown Source) at org.python.core.PyMethod.__call__(Unknown Source) at org.python.core.PyObject.__call__(Unknown Source) at org.python.core.PyInstance.invoke(Unknown Source) at applet$_PyInner.init$1(applet.java:61) at applet$_PyInner.call_function(applet.java:47) at org.python.core.PyTableCode.call(Unknown Source) at org.python.core.PyTableCode.call(Unknown Source) at org.python.core.PyTableCode.call(Unknown Source) at org.python.core.PyFunction.__call__(Unknown Source) at org.python.core.PyMethod.__call__(Unknown Source) at org.python.core.PyObject.__call__(Unknown Source) at org.python.core.PyObject._jcallexc(Unknown Source) at org.python.core.PyObject._jcall(Unknown Source) at applet$MyApplet.init(applet.java:139) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
466 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:43:40 ] pc11.2ch.net/test/read.cgi/tech/1207878910/385
467 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:13:26 ] マルチしちゃったか 死ね
468 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:38:32 ] ちょっと教えて欲しいんだけど、pythonの正規表現で先読みって使えないの? 下みたいに書いても全然文字列を分割してくれないんだけど line = '123,456,79' regexp = re.compile('(?=5)') print regexp.split(line)
469 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:56:48 ] >>468 www.python.jp/doc/nightly/lib/re-syntax.html > (?=...) > もし ...が次に続くものとマッチすればマッチしますが、文字列をまったく消費しません。 > これは先読みアサーション(lookahead assertion)と呼ばれます。 > 例えば、Isaac (?=Asimov) は、'Isaac 'に 'Asimov'が続く場合だけ、'Isaac 'とマッチします。 '(?=5)' だと空文字列に 5 が続くなら空文字列にマッチ(ただし 5 は消費しない)という意味になるのかな? 空文字列にマッチしたら分割の目的には使えないような・・・。 >>> a = re.compile(",(?=4)") >>> a.split("123,456,789") ['123', '456,789']