1 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 15:22:07.02 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>985 辺りで 前スレ くだすれPython(超初心者用) その11 hibari.2ch.net/test/read.cgi/tech/1301383226/ 関連スレ Pythonのお勉強 Part45 hibari.2ch.net/test/read.cgi/tech/1321189773/ ◆関連リンク Python の Home Page ttp://www.python.org/ ┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
2 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 15:26:55.93 ] 最新版直リン - 2.Xが推奨。3.Xはライブラリやドキュメントが使えないことも ttp://www.python.org/download/ Python のコーディングガイド PEP8 ttp://www.python.org/dev/peps/pep-0008/ Python のコーディングガイド PEP8 - 日本語訳 ttp://www.oldriver.org/python/pep-0008j.html 日本語文字列コード問題まとめ ttp://python.matrix.jp/tips/string/encoding.html インタラクティブモードのエンコード ttp://python.matrix.jp/tips/compatibility/interact_encoding.html SJISから卒業出来ないひとのための禁じ手 reload(sys); sys.setdefaultencoding('cp932') Pythonの文字化け対策:sys.setdefaultencodingの謎 ttp://hain.jp/index.php/tech-j/2008/01/07/Python%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91 実行時にdefaultencodingを変更する ttp://d.hatena.ne.jp/perezvon/20070715/1184469534 PEP-8とか ttp://www.python.org/dev/peps/pep-0008/ ttp://oldriver.org/python/pep-0008j.html Google Python Style Guideとか ttp://google-styleguide.googlecode.com/svn/trunk/pyguide.html ttp://works.surgo.jp/translation/pyguide.html
3 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 15:40:31.06 ] >1 乙
4 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 17:21:16.58 ] 辞書型で、値の最大値のキー値を求めたいのですが、スマートなやり方ないですか? d = {0:1,1:2,2:3,4:5,6:7} list(d.keys())[ list(d.values()).index(max(d.values())) ] 6 もっとスマートな方法ないですか? Python3.1です
5 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 17:32:55.92 ] >>> from operator import itemgetter >>> max(d.items(), key=itemgetter(1)) (6, 7) >>> max(d.items(), key=itemgetter(1))[0] 6
6 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 17:38:17.38 ] 超初心者的には遅そうで心配
7 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 17:41:20.40 ] max(d.items(),key=lambda x:x[1])[0] ってのでも出来るんですね 出来れば処理速度が早いのがいいです Cythonでコンパイルして利用します
8 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 18:09:56.51 ] type()で返ってくる<type 'type'>の解釈を教えてください。
9 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 19:23:32.09 ] >>2 勝手に2.X推奨すんなボケ。 男なら迷わず3.Xだろ。 女子供はひっこんでろ。
10 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 19:38:07.28 ] さくらのサーバが2、6じゃん
11 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 19:39:34.36 ] 2.Xマンセー
12 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 19:58:47.18 ] 漢なら仮想鯖借りて、自分でOSからいれろ。 3.3のα以前版でも入れ放題だぞ!
13 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 19:59:33.04 ] 超初心者用が復活した途端に質問者のレベルが跳ねあがったのは気のせいか
14 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 20:14:12.81 ] そしてお勉強スレのレベルがますます下がるのはいつものこと
15 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 21:02:55.31 ] いちょつ
16 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 21:05:41.83 ] 超低レベルってsocket.*とかの話?
17 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 21:14:39.05 ] こんなに需要があるとは思わなかった() もっと早くたてとけばよかった()
18 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 21:29:49.12 ] >>16 質問者のPythonレベルが低いってことだろjk
19 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 22:02:31.22 ] Pythonで書く利点を最大限に活かすために まず最初に覚えるべきことって何ですか?
20 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 22:05:40.74 ] import this
21 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 22:14:07.49 ] もっと役に立つモジュールおしえてよ
22 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 22:27:27.07 ] import __hello__
23 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 22:58:34.84 ] insert 006P
24 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 23:01:03.35 ] >>21 livedoor.blogimg.jp/kinisoku/imgs/0/b/0b4cfd5d.jpg
25 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 23:04:52.11 ] _winreg
26 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 23:05:51.71 ] 風のうさぎちゃん
27 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 23:52:44.13 ] class Foo(object): のobjectって何者ですか 一体何を継承しているんですか
28 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 00:12:51.00 ] 継承ツリーの頂点に位置するのがobjectクラス __str__みたいにオブジェクトなら誰でも持ってるメソッドが定義してある dir(object())して出てくるのがたぶんそれ
29 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 00:24:44.16 ] クラスってインスタンスを継承することも出来るんですか class Foo(): foo = Foo class Fooo(foo)みたいな 何の意味があるんですか
30 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 00:46:46.30 ] 結局同じオブジェクトを参照してるだけじゃないの?
31 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 08:58:26.47 ] stringモジュールにascii_lowercaseなんてものがあるとは知らなかった 今までaからzを手打ちしてて文字が抜けたことが何度も・・・
32 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 09:45:48.69 ] ascii_lowercase知らなかったことは、別に問題ないけど、 >今までaからzを手打ちしてて そこで車輪を発明しようと考えるのは、ちょっと反省したほうがいいぞ・・・
33 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 10:08:25.64 ] この世にはコピペという便利なものがあってだな
34 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 15:54:29.46 ] >>29 節子それインスタンスちゃう
35 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 15:56:33.63 ] >>32 string.base64 はさすがにないな
36 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 16:53:44.84 ] こっちのスレのほうが建設的になるのはいつものこと。
37 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 20:15:21.62 ] デストラクタをわざわざ呼び出すことが少ないからね
38 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 01:20:48.15 ] CUDAスレPython(超初心者用) かと思った。
39 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 01:23:23.15 ] >>34 え、じゃあ何ですか?
40 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 01:28:47.90 ] Pythonのソースコードを見ていると class Foo1(): ...def __init__(self) class Foo2(Foo): ...def __init__(self) ......Foo1.__init__(self) こんな感じで、派生先のクラス内の初期メソッドで 継承元のクラスの初期メソッドを実行してるのをよく見かけるんですが これってどういうことなんでしょうか。 そもそも初期化ってどんな場合に必要あるんでしょうか。 あと、pythonのソースで、classのの名前の例がFooになってることが多いと思うんですが このFooってのは何かの略なんでしょうか?
41 名前:40 mailto:sage [2011/11/26(土) 01:29:37.06 ] class Foo1(): ...def __init__(self) class Foo2(Foo1): ...def __init__(self) ......Foo1.__init__(self) まちがえた、こうです
42 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 01:33:12.35 ] pass
43 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 02:53:33.02 ] >>40-41 その書き方は古いんじゃなかったっけ? class Foo1(): def __init__(self, hoge): return hoge class Foo2(Foo1): def __init__(self, fuga): return super(Foo2, self).__init__(fuga) ttp://d.hatena.ne.jp/migimigi/20081122/1227346471
44 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 02:55:47.54 ] class Foo1(object): def __init__(self, hoge): return hoge class Foo2(Foo1): def __init__(self, fuga): return super(Foo2, self).__init__(fuga) まちがえた、こうです
45 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 03:25:19.07 ] >>43 super使ってもどうせ自クラスの名前は入力しないといけないようだけど、それ使う利点ってあるの?
46 名前:名無しさん@いたづらはいやづら mailto:sage [2011/11/26(土) 03:38:45.49 ] >>44 TypeError: __init__() should return None, not 'int'
47 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 03:42:01.34 ] >>45 super(self.__class__, self).__init__(*args, **kw) じゃだめか……な。 Python 3.x では super の引数が省略できる。 docs.python.org/py3k/whatsnew/3.0.html#builtins
48 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 04:16:01.67 ] >>47 super(self.__class__, self).__init__(*args, **kw) いけるみたいです
49 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 04:17:41.48 ] >>> class Foo1(object): ... def __init__(self): ... pass ... def whoami(self): ... print self.__class__ ... >>> class Foo2(Foo1): ... def __init__(self): ... super(self.__class__, self).__init__() ... >>> f1 = Foo1() >>> f2 = Foo2() >>> f1.whoami() <class '__main__.Foo1'> >>> f2.whoami() <class '__main__.Foo2'>
50 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 06:13:59.61 ] >>> class Foo1(object): ... def __init__(self): ... pass ... def whoami(self): ... print self.__class__ ... def whoismyparent(self): ... super(self.__class__, self).whoami() ... >>> class Foo2(Foo1): ... def __init__(self): ... super(self.__class__, self).__init__() ... >>> f1 = Foo1() >>> f2 = Foo2() >>> f1.whoami() <class '__main__.Foo1'> >>> f2.whoami() <class '__main__.Foo2'> >>> f1.whoismyparent() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 7, in whoismyparent AttributeError: 'super' object has no attribute 'whoami' >>> f2.whoismyparent() <class '__main__.Foo2'>
51 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 06:22:33.37 ] >>> class Foo1(object): ... def __init__(self): ... pass ... def whoami(self): ... print self.__class__ ... def whoismyparent(self): ... print super(self.__class__, self).__class__ ... >>> class Foo2(Foo1): ... def __init__(self): ... super(self.__class__, self).__init__() ... >>> f1 = Foo1() >>> f2 = Foo2() >>> f1.whoami() <class '__main__.Foo1'> >>> f2.whoami() <class '__main__.Foo2'> >>> f1.whoismyparent() <type 'super'> >>> f2.whoismyparent() <type 'super'>
52 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 13:29:29.12 ] >>39 >>29 はクラスの実体ではなくクラスを直接fooと結びつけてるね だからfooはFooのインスタンスでなくFooそのものじゃね
53 名前:47 mailto:sage [2011/11/26(土) 16:13:49.71 ] >>48 よく考えたら、 super(self.__class__, self).__init__(*args, **kw) とやってるクラスを継承したら無限ループに陥るので駄目だわ。 ごめん。
54 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 16:29:49.46 ] super使ってもどうせ自クラスの名前は入力しないといけないようだけど、それ使う利点ってあるの?
55 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 17:45:58.37 ] python で suコマンドを実行して、パスワードを入力したいのですが、 どこかに見本は無いでしょうか。
56 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 19:38:19.74 ] シェルスクリプトスレに居た人だ
57 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 19:51:17.77 ] subprocess.call('su hoge')
58 名前:デフォルトの名無しさん [2011/11/27(日) 09:23:00.28 ] ◇ ミ ◇ ◇◇ / ̄| ◇◇ ◇◇ \ |__| ◇◇ 彡 O(,,゚Д゚) / ( P `O /彡#_|ミ\ </」_|凵_ゝ 【ラッキーAA】 このAAを見た人はコピペでもいいので 10分以内に3つのスレへ貼り付けてください そうすれば14日後好きな人から告白されるわ宝くじは当たるわ 出世しまくるわ体の悪い所全部治るわでえらい事です
59 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 14:15:35.90 ] どういう原理で?
60 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 19:39:31.74 ] Windows7でpython 2.5使ってます ドキュメントに書かれてるのと結果が違います import os print os.name -> nt import platform print platform.system() -> Microsoft どうしたら Windows って出てくるの?
61 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:09:12.88 ] >>54 多重継承を使わない場合は 従来の方法でおk
62 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 03:13:29.98 ] $ python Python 2.7.2 (default, Oct 25 2011, 04:17:25) [GCC 4.5.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> print os.name posix >>> import platform >>> print platform.system() Linux >>>
63 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 03:15:19.70 ] $ python Python 2.6.6 (r266:84292, Sep 2 2010, 19:26:16) [GCC 3.3.6] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> print os.name posix >>> import platform >>> print platform.system() Linux >>>
64 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 04:42:12.53 ] $ python Python 2.6.5 (r265:79063, Jun 12 2010, 17:07:01) [GCC 4.3.4 20090804 (release) 1] on cygwin Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> os.name 'posix' >>> import platform >>> platform.system() 'CYGWIN_NT-6.1-WOW64' >>>
65 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 03:35:03.13 ] Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> import os >>> print os.name nt >>> import platform >>> platform.system() 'Windows' >>>
66 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 11:27:00.80 ] IronPython 2.7.1 (2.7.0.40) on .NET 4.0.30319.239 Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> print os.name nt >>> import platform >>> platform.system() 'cli' >>>
67 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 23:34:55.18 ] 質問です。 以下のスクリプトを実行してリストから拡張子がmp3のファイルのみ削除したいのですが、実行結果に'test1.mp3'が残ってしまいます。分かる方がいたら教えてください。 環境はWindows xp sp3, python ver 2.7.1 です。 l = ['test0.mp3', 'test1.mp3', 'test2.mp3', 'test3.wma'] for i in l: if i.endswith(".mp3"): l.remove(i) print l >>>['test1.mp3', 'test3.wma']
68 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 23:45:56.10 ] >>67 www.python.jp/doc/2.3.5/ref/for.html の警告以降を熟読のこと。
69 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 00:00:00.12 ] 2.6の翻訳もあります www.python.jp/doc/release/reference/compound_stmts.html#for
70 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 00:02:38.74 ] l = [i for i in l if not i.endswith('mp3')]
71 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 00:27:37.01 ] >>68 、>>69 、>>70 さん有難うございます。 期待どおりの結果が得られるようになりました。 一応、上手くいった方のスクリプトも書いておきます。 l = ['test0.mp3', 'test1.mp3', 'test2.mp3', 'test3.wma'] for i in l[:]: if i.endswith(".mp3"): l.remove(i) print l >>>['test3.wma']
72 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 21:07:19.71 ] >>> a = (1,2,3) >>> b = a >>> a += (4,5,6) >>> a (1, 2, 3, 4, 5, 6) >>> b (1, 2, 3) >>> a = [1,2,3] >>> b = a >>> a += [4,5,6] >>> a [1, 2, 3, 4, 5, 6] >>> b [1, 2, 3, 4, 5, 6] そんなもんなのね・・・
73 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 21:15:37.93 ] >>> a += (4,5,6) これって禁止されてないのか
74 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 21:45:03.24 ] 内部的には、まず元オブジェクトを書き換える __iadd__() の実行を試してみて、 それができなければ __add__() 呼んでオブジェクト差し替えしてるみたいです。 list には__iadd__() もあるが、tupleには __add__() しかない。 まぁ、自分でクラス作るときは、__ixxx__() シリーズを作るべきか否か 気をつけましょう、ってことで。
75 名前:40 mailto:sage [2011/12/02(金) 00:11:31.16 ] モジュールをimportをするっていうのは いわゆるPythonが提供しているクラスを読み込んでくるってことですよね? import random random.uniform(2,10) みたいにクラス.メソッド(引数)って感じで呼び出すのが普通なのかと思っていたら Pythonって class test(): ...def testMethod(self): ......print "test" っていうクラスとメソッドがあった場合 この状態で直接クラス.関数名(引数)[test.testMethod'()]って呼び出すとエラーが出るじゃないですか まずt=test()って言う風にインスタンスを作って その後t,testMethod()って形で呼び出す形式なのが普通なんですかね? モジュールとかを読み込んだ後に、クラス.関数名(引数)で呼び出せているのは モジュールの内部で class test(): ...@classmethod ...def testMethod(self): ......print "test" っていう風に、内部でクラスメソッドとして定義されているからってことですか? 何でこんな風に内部メソッドの呼び出し方が分かれているんでしょうか インスタンスを作ると必ず初期メソッドが実行されてしまうから それを避けるために@classmethodがあるということでしょうか? インスタンスを作るっていうのは、初期メソッドと一緒に、クラスの内部を使いたいという 両方の条件が揃ってる時だけって解釈でいいんでしょうか?
76 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 00:56:24.41 ] >>75 誤字が多くて何言ってるのかわからん。 JavaScript風のオブジェクト指向しかやったことがないなら 一回Javaの薄い本でも読んでみたら?
77 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 08:36:29.86 ] importで読み込むのはモジュールであってクラスじゃない
78 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 08:39:57.97 ] Javaの薄い本…ゴクリ >>75 んーと、色んなことを混同し過ぎだよ モジュール名の後の . クラス名の後の . インスタンス(つまりクラスから生成されたオブジェクト)の後の . それぞれを一度、分けて考えてみて
79 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 11:20:44.71 ] >>75 __call__()
80 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 11:23:42.74 ] >>40 おまいは基礎からやり直し
81 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 11:36:17.95 ] 馬鹿には無理
82 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 11:48:47.15 ] 空中に基礎は打てない
83 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 13:07:58.64 ] >>> class Test(object): ... def __call__(self): ... print 'hoge' ... >>> Test()() hoge なんだこりゃ
84 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 19:34:12.56 ] >>83 ん? 至極真っ当な動作だと思うけど…
85 名前:40 mailto:sage [2011/12/03(土) 20:57:30.17 ] 基礎ってどうやってみにつければいいの C++とか覚えればいいの
86 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 21:21:21.74 ] 公式チュートリアルを読む
87 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 23:53:54.58 ] >>85 あえて言えば Smalltalk かな
88 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 01:01:33.68 ] 馬鹿には無理
89 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 03:42:30.77 ] pythonで基礎は学べるはずだけど
90 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 12:11:41.54 ] おすすめの入門本はありますか?
91 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 14:18:29.36 ] >>85 , >>90 まずはこれを読む。 ttp://www.python.jp/doc/release/tutorial/ 分からないことはググる。それでも分からなかったらここで聞く。
92 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 16:52:02.55 ] 2chのスレから画像だけをダウンロードさせるスクリプトを書きたいんですが、 以下でできません。どうすればいいんでしょうか import urllib urllib.urlretrieve( 'hibari.2ch.net/ ', '保存先ディレクトリ')
93 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 16:58:05.13 ] >>92 なんでそれでダウンロードできると思ったか知りたい。 reを使ってjpgとかを抜き出したら 短縮URLは知らん。
94 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:01:11.56 ] 馬鹿には無理
95 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:02:23.56 ] 普通はdatからだな
96 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:14:59.34 ] ttp://codepad.org/867hG83d
97 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:26:29.49 ] >>93 ここに書いてあったんだ。 www.gesource.jp/programming/python/code/0006.html >>96 試したら --OKしか出てこなかった(´・ω・)
98 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:40:45.38 ] >>97 hoge.py という名前で保存したら コマンドラインから ./hoge.py hibari.2ch.net/test/read.cgi/tech/1322115727/ とか打てばいい っていうかこれくらいソース見て判断汁
99 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 22:20:36.00 ] |....,,__ |_::;; ~"'ヽ | //^''ヽ,,) | i⌒" | ∀`) < 誰もいない きのこるならいまのうち |⊂ | ノ _,,,......,,__ /_~ ,,...:::_::;; ~"'ヽ (,, '"ヾヽ i|i //^''ヽ,,) ^ :'⌒i i⌒" |( ´∀`) < きのこ のこーのこ げんきのこ ♪ |(ノ |つ | | ⊂ _ ノ ""U _,,,......,,__ /_~ ,,...:::_::;; ~"'ヽ (,, '"ヾヽ i|i //^''ヽ,,) ^ :'⌒i i⌒" (´∀` )| < エリンギ まいたけ ブナシメジ ♪ ⊂| (ノ | | | ヽ _ ⊃ .U"" | | ミ | ミ サッ! | ミ |
100 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 01:50:34.29 ] まともな回答者がいない
101 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 03:18:07.31 ] ならば、君がその一人になりたまえ
102 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 03:22:51.15 ] 足し算もできない人が簡単な微積の問題持ってきて解き方教えてと言ってるようなもの 解答(ソース)まで出してる人がいるのにまともじゃないとか失礼だよ
103 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 04:09:10.08 ] >100 はツンデレ
104 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 16:02:35.74 ] pythonを覚えると仕事つける? 26男 IT未経験
105 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 16:27:53.01 ] 別に
106 名前:デフォルトの名無しさん [2011/12/06(火) 22:03:45.82 ] 超初心者です。 samplenode.txtにかかれたノードを1行ごとに読み込んで、読み込んだノードをlineに代入し、 コマンドのtracerouteをかけて、表示したいのですがうまくいきません。下記のようなものを書いてみました。 よろしくおねがいしよろしくお願いします。 f = open('samplenode.txt') lines2 = f.readlines() f.close() import commands for line in lines2: print commands.getoutput('traceroute '+line)
107 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 22:24:15.30 ] >>106 多分、コマンドの文字列に改行文字が含まれてるからだと思うけど、 どういう風にうまくいかないのかを報告しよう。(エラーが出る、何も表示されない、期待通りの表示がされない、etc) まずは、line変数の内容を表示してみて。 print line だと見落とすかもしれないので、print repr(line) 改行文字が入ってるので取り除く。 print commands.getoutput('traceroute ' + line.strip()) 慣れないうちは、関数の引数のところには式は書かず、一ステップずつ変数にいれていくといいよ。 printデバッグでは改行文字とか見落とす事があるので、インタラクティブ・シェルを活用しよう。 >>> cmd = "traceroute " + line.strip() >>> cmd 'tracerout x.x.x.x\n' >>> status,result = commands.getoutput(cmd) (1, '')
108 名前:デフォルトの名無しさん [2011/12/06(火) 22:35:03.62 ] 106です。すいません。次からは報告します。 うまくいきました。改行文字が入っていたことが原因でした。 丁寧な説明、どうもありがとうございました。
109 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 01:53:20.84 ] windowsXP、2.7.2です。 状況: 関数Bと関数Cは、関数Aからしか呼び出されません。 関数Bと関数Cを関数Aにネストさている場合とさせていない場合に、 挙動の違いはあるのでしょうか? この状況では、どちらが一般的な記述方法なのでしょうか? この状況下でのネスト・非ネストのメリット・デメリットを教えてください。 また、使い分けのセオリーなどはあるのでしょうか。 上記のご回答、宜しくお願いいたします。
110 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 02:19:32.32 ] pass
111 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 04:29:01.18 ] 用語は正しく使わないと伝わらないんじゃね
112 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 05:42:26.89 ] >>109 基本はネストさせないで書く(Zen of Python より ネストさせなくていいならしない方がいい) 内部的には、ローカル・グローバルになる等の違いはあるけど、 ネストさせるかどうかの判断基準にするようなことではない。 それよりも、「非公開関数はネストにする」といったルールを運用すると、 「関数 B は A と D からのみ呼び出す」といった場合に、困ることになります。 ## 内部関数が便利なのは、 * 引数があまりにも多くなる場合に、スコープ内の引数を省略できる。(クロージャ) * 関数に渡されたパラメータを元に、関数を動的に生成する場合等。(e.g. デコレータ定義) ## 欠点は、とりあえず思いつく限りでは・・・ * (慣れてない人にとって)コードが読みにくくなる事。デバッグが多少面倒になる。 * インデントが深くなる。 * 再利用しにくい。 * ドキュメント・ツールで自動で文書化出来ない。(※ デコレータ定義用途では、functools.wrapsを使えば可) * 関数の単体テストが出来ない。 > 状況: 関数Bと関数Cは、関数Aからしか呼び出されません。 こういった状況でネストする場合、大抵はクラスで置き換え可能なので、クラス A のメソッド _B, _C というようにする。 クラスにしない場合では、ネストさせずに 関数 A, _B, _C とします。( '_' プレフィクス付の命名で、内部関数と表明する。命名規則について >>2 を読もう)
113 名前:デフォルトの名無しさん [2011/12/07(水) 15:17:31.93 ] ある本に書いてあったのですが、 from math import sqrt psqrt(pow(4.5-4.2,2)+pow(1-1,2)) のようにすると、 Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'psqrt' is not defined のようなエラーが出ます これはどのようにすればいいのでしょうか? Python2.6.6です
114 名前:デフォルトの名無しさん [2011/12/07(水) 15:21:46.00 ] 今もう一度やってみて分かったのですが、 これはこの本の誤植のようですね 膨大な誤植の嵐のあるこの本のせいだと分かりました この件は正誤表にもまだ書かれていないようですが ご迷惑おかけしました
115 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 15:30:21.57 ] 日記はチラウラで
116 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 15:31:43.88 ] >>113 何て本
117 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 15:49:17.95 ] 本はあまりオススメできないWebで勉強しろって>>1 に書いてもいいかもしれんね
118 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 15:59:23.71 ] 嘘書いてあったり 内容が古くなってたり おまけに日本語についての考慮がない本とか なんでお薦めになってるのか理解不能なのもある
119 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 17:44:09.90 ] >>114 この程度の誤植なら修正する必要ないと思ったんじゃないか。 前行で import sqrt してるわけだし。
120 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 18:51:33.32 ] math.pow()は別のところでimportしてるんだろか Pythonなら普通 ** 演算子で済ませると思うし それを言うなら、二乗の和の平方根(ユークリッド距離)計算したいんなら単に math.hyport(4.5-4.2, 1-1) でいいわな なんつうか、いろいろ解せない「本」ではあるな
121 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 18:52:17.29 ] ごめんtypoった math.hypot(4.5-4.2, 1-1) の間違い
122 名前:109 mailto:sage [2011/12/07(水) 19:00:16.28 ] >>112 クラスは、未だ単純な構造体代わり(関連する変数の集合体)にしか 使った事がないので、関数でネストさせずに_付き命名の方向にします。 丁寧な回答、ありがとうございました。
123 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 19:14:40.49 ] powは組み込み関数版がある
124 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 19:58:50.31 ] >>123 あ、そーか どうせ**演算子で使うから組み込みになってるのかな
125 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 20:18:09.14 ] >>121 著者乙()
126 名前:デフォルトの名無しさん [2011/12/08(木) 00:53:43.92 ] >>116 「集合知プログラミング」だね。誤植がとにかく多い。
127 名前:デフォルトの名無しさん [2011/12/08(木) 22:26:17.10 ] Python3は2との互換性が無いとの記事を読みました 自分はPythonに関しては今触り始めたばかりで、使っているのはcentOS6に入っている2.6.6なのですが Python3は今どうなのでしょうか? まだ3.2なので、Python2系の方が安定性とか考えるとやはりいいのでしょうか? それとも、まだPython初学者であるので最初から3に行った方がいいでしょうか? 個人的にはPHPにしろMySQLにせよ新しいバージョンをと思っているのですが、 まだバージョンが3.2と浅いということと、後方互換性がないという致命的なものがあるので どうなのかなと思いまして 処理速度とか、今あるライブラリ、フレームワークなどが後方互換性のなさから使えないとかあれば困る とかあればアドバイスを頂きたいのですが
128 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 23:18:43.76 ] 安定性は3つ目の数字っすよ docs.python.org/py3k/faq/general.html#how-stable-is-python
129 名前:デフォルトの名無しさん [2011/12/08(木) 23:58:03.10 ] リンクありがとうございます どうやら英文によるとライブラリなどの適応はPython3はまだ問題ありということらしいですね 皆さんは、やっぱ2系を使っているのでしょうか? >安定性は3つ目の数字っすよ というのは、3,2,2の最後の部分の事を言っているのでしょうか? それとも、リンク先に何か数字があったのでしょうか?
130 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 00:38:13.73 ] 古い仕様を「先に」覚える必要はない
131 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 00:53:29.75 ] 2で何の問題もないけど、3にはどんなメリットがあるの
132 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 01:20:03.06 ] >>128 は素人
133 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 01:22:44.68 ] 2.xについては 2.4以前なら致命的だけど 2.5以降なら何使っても問題ないよ 3.xについては >今あるライブラリ、フレームワークなどが後方互換性のなさから使えないとかあれば困る とかあるよ
134 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 04:09:25.15 ] これも合わせて参考に。 wiki.python.org/moin/Python2orPython3
135 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 09:45:07.71 ] >>130 新しい仕様が「普及しない」かもしれないのに?
136 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 11:12:44.90 ] Python は Perl とは違うのだよ Perl とか Ruby とか
137 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 15:40:48.88 ] 結局皆Python2.X使ってるの?
138 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 15:51:53.24 ] py3kが普及しないと思ってる奴なんてほとんどいないはず 今は代表的なライブラリの対応待ちとお前移行しろよいやお前からやれよって牽制し合ってる状態
139 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 16:04:52.68 ] まあ西暦3000年ごろには普及するとは思うが。
140 名前:デフォルトの名無しさん [2011/12/09(金) 16:36:48.75 ] djangoもzopeも全然Python3に移行できてない事実を考えれば、おのずと答えはわかる。
141 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 16:48:56.15 ] Python3は黒歴史になるのかな・・・・・
142 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 21:33:00.55 ] Python 3 Wall of Shame python3wos.appspot.com/
143 名前:デフォルトの名無しさん [2011/12/10(土) 02:19:20.45 ] linux環境で端末を開いたとき、[xxx@yyy]$のようにPCによって異なる表示がされると思いますが、 このxxx@yyyの部分をファイル名にコピーする(xxx@yyy.txtなど)ようなアルゴリズムを書きたいのですが、 全く検討もつきません。PCごとにxxx@yyyの部分が変わるようにしたいです。 考えていただけませんでしょうか?よろしくお願いします。
144 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 02:40:24.63 ] from subprocess import Popen, PIPE def bq(argv): return Popen(argv, stdout=PIPE).communicate()[0] '%s@%s' % (bq(['whoami'].rstrip(), bq(['hostname'].rstrip()) せっかく書いたので貼ったけどもっとまともな回答が付くと思う
145 名前:デフォルトの名無しさん [2011/12/10(土) 03:10:00.91 ] ありがとうございます。 tmp.txtをxxx@yyy.txtに変える場合はどうすればいいですか? 初心者で上の文がよくわからないので・・・
146 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 04:34:30.85 ] HOSTNAMEとか環境変数が設定されてる環境なら import os filename = "%s@%s.txt" % (os.environ['USER'], os.environ['HOSTNAME'])
147 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 07:15:49.73 ] D:\work>python --version Python 2.7.2
148 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 09:23:46.64 ] Python '75
149 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 11:53:47.77 ] username = os.getlogin() hostname = socket.gethostname()
150 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 12:28:14.33 ] argparseとか、configparserとか 何でparse[r]にrがついたり、つかなかったりするん。 打つときいつも迷う
151 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 15:11:02.69 ]
152 名前:デフォルトの名無しさん [2011/12/10(土) 18:40:09.63 ] forを使った、リスト内包文に関して教えてください foo = [ x * 2 for x in [0,1,2] ] これは foo = [ x * 2 for x in range(3) ] と同じ[0, 2, 4]となりますが、これらはforによって得られたxを前の式に入れるという事は分かります しかし、次の loc = [ [ random.random(), random.random() ] for i in range(n) ] という形が理解できません 例えばこの時、n=3であれば3つのリストがprintによって出力されます locの[ random.random(), random.random() ]式内にはiという文字が入ってもいないのに なぜこの場合、要素数になって、それが反映されているのでしょうか? 例えば、PHPなどのようにfor()にて第2引数で処理要素数がしていされている形であれば分かるのですが、 このPythonの記述法はどこからそれらが導かれているのか理解ができませんでした
153 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 18:51:00.29 ] >>152 [ random.random(), random.random() ]を三回繰り返してるだけ
154 名前:デフォルトの名無しさん [2011/12/10(土) 19:16:18.53 ] >>153 返答ありがとうございます printしてみたら、[ random.random(), random.random() ]が3回表示されたので、 挙動は分かったのですが、何故そうなるのかが分かりません Pythonの場合、for()等で他の言語のように第2引数によって条件などが入りませんが、 そのおかげでこの挙動が自分には理解が出来ません foo = [ x * 2 for x in range(3) ]の場合は、x * 2にforで得られたxの値が入るに対し、 2つ目のlocの式は何故n回だけ実行されるのかが分かりません python.g.hatena.ne.jp/muscovyduck/20080716/p1 このサイトなどで書かれているのもやはり、x,y等の対応する変数が存在するので挙動は分かるのですが、 locのようなものを解説しているサイトや本を見つけられませんでした
155 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 19:26:35.76 ] >>154 for ループの仕組みから理解できていないんじゃないか? for i in [0, 1, 2] の場合、0, 1, 2を順番にiに代入していき、全て終わったらループが止まる そのlocの例の場合はiが使われていないだけ loc = [[ random.random(), i ] for i in range(3) ] とでもしてみれば分かりやすいかな?
156 名前:デフォルトの名無しさん [2011/12/10(土) 19:33:13.00 ] >>155 あっ、ようやく分かりました ありがとうございました
157 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 19:56:05.83 ] python setup.py buildとpython setup.py installはどう違うのですか? webで検索していると、ライブラリによってはインストール時にbuildの場合とinstallの場合があるようですが
158 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 19:57:39.11 ] WindowsでPythonをbatファイルの替わりに使いたいんだけど、 batでdosコマンドを実行したときのように 実行経過を表示することはできるのでしょうか?
159 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 20:48:38.43 ] ?
160 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 22:30:23.27 ] [r["text] for result in search_results for r in result["results"]] というコードがあるのですが左から順にfor文の内容が実行されていってるようなのですが リスト内包表記では右から実行される訳ではないんでしょうか?
161 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 22:41:59.21 ] 簡単な例で試すといいよ >>> [(i, j) for i in [1, 2, 3] for j in [4, 5, 6]] [(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
162 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 22:44:56.32 ] 左からで正しいよ [f(x,y) for x in xs for y in ys if cond(x, y)] こういうのは ループで言うと、 for x in xs: for y in ys: if cond(x, y): yield f(x,y) これと一緒だと思えばいい 要はyieldする式が先頭かケツかの違いだけで、普通のループと同じ読み方ができる
163 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 22:54:27.12 ] >>161-162 回答ありがとうございます。 どうやら重大な勘違いをしていたようで助かりました。
164 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 23:04:33.40 ] >>157 ビルドは環境を構成するだけ (buildディレクトリ) コンパイルしたりするのはここ。 インストールはsite-packages等へビルドされた環境をコピー この時ビルドがまだならビルドする。 インストール以外にも配布用のパッケージを作成したりインストーラを生成したりもできる。
165 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 20:57:14.04 ] >>158 馬鹿には無理
166 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 21:40:17.79 ] 以下のソースを作成し、 import csv reader = csv.reader(file("some.csv", "rb")) for row in reader: print row 以下のように実行するとエラーが出ます。 なぜか原因が全くわかりません。 $python csv.py Traceback (most recent call last): File "csv.py", line 1, in <module> import csv File "/home/aaa/csv.py", line 2, in <module> reader = csv.reader(file("some.csv", "rb")) AttributeError: 'module' object has no attribute 'reader' なんでだ・・・
167 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 21:50:13.36 ] csv.pyの名前を変える
168 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 21:51:33.12 ] >>167 それ、さっきやりましたがダメでした。
169 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 21:55:23.67 ] print csv.__file__ をやってみる。
170 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 22:45:03.45 ] >>166 fileじゃなくてopen? × reader = csv.reader(file("some.csv", "rb")) ○ reader = csv.reader(open("some.csv", "rb")) csv弄る用事があるのを思い出したw
171 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 23:27:25.60 ] いろいろセンスのなさが目立つな
172 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 23:28:04.27 ] わざとやってるんじゃなかったのか。
173 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 23:33:23.10 ] >>170 openは内部的にfileを呼んでるだけだから、 その2つの例はまったく同じことをやっているだけ。
174 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 01:47:58.64 ] csv.pyc が残ってる可能性がある。(コンパイル済のキャッシュ) 2.xであれば、ファイル内に日本語含む場合は、csv内の文字コードが・・・ なんて場合に備えて codecs.open がいいかもしれない。
175 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 17:35:59.02 ] なんでshebangの意味を教えてくれなかったんだ linuxでやるときもとりあえず書いて実行する時は$python oppai.pyってやってたわ それとか #!/usr/bin/env python # -*- coding: utf-8 -*- import matplotlib.font_manager as fm font = fm.FontProperties(fname=u'c:\\windows\\fonts\\arialuni.ttf') みたいな windowsでは意味のない行やん。なんで教えてくれなかったんだ
176 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 17:39:52.45 ] もしかしたらで違ってるかもしれないけど、質問しなかったからじゃないか
177 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 17:46:31.27 ] 質問はしなかった(´・ω・`) C習う時に#include<stdio.h>は「おまじない」と言われるみたいになんとなく受け入れてた くそう。import numpy;(len("python ")-len("./"))*numpy.inf分のタイプ数をロスしたわぁ
178 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 18:07:33.45 ] 構文ハイライト等のコード判別でshebang読むのとかあるから、書いて損はないよ。 自分にとっても、後々、別の処理系・言語をやる場合に、 似たような構文の他の言語と読み間違えるのを防げる。
179 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 18:35:06.15 ] >タイプ数をロスしたわぁ ……。
180 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 19:02:28.41 ] PEP 397 -- Python launcher for Windows www.python.org/dev/peps/pep-0397/ PEP 397 compatible launcher for Python under Windows https://bitbucket.org/vinay.sajip/pylauncher/downloads とかあるから一行目shebang、二行目encoding、次に__doc__置くのは 習慣付けてもいいと思う shebangきちんと動かすんだったら改行コードもLFにする必要あるけど 標準ライブラリはCRLFだったりするしそこまでする必要はないかな
181 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 19:18:03.39 ] タイプ数を節約したいということなら、雛形使って書き始めると良い
182 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 20:20:37.39 ] dabbrev
183 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 00:08:31.69 ] >>175 2行目はWindowsでも意味はある
184 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 02:51:50.84 ] python - ./ ってことは実行時のタイプ数?shebangがないとカレントのファイル直接実行できないけど python に警告制御等のオプション付きで実行する事があるかもしれないから。 パスの通った場所に置くならともかく、デバッグ時なら実行権限与えたりしない。 複数 python 入ってると shebangで指定される python がどれかわからなくなるかもしれないので 実行する時わざわざ $ python ... で実行するメリットもある。 何度も繰り返し実行するというならシェルの履歴使う。最短なケースでは僅か2タイプで済む。 shebangは書く python foo.py で実行で全然問題ないよ。 タイプ数は、エディタ(雛形挿入)やシェル(履歴)を使いこなせば節約できる。
185 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 16:20:49.52 ] 日本語勉強しなおせ
186 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 19:49:10.26 ] 日本語のshebangは何だろう
187 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 19:52:55.17 ] 殻爆
188 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 23:05:44.60 ] 井桁爆弾
189 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 16:01:23.72 ] #拝啓
190 名前:デフォルトの名無しさん [2011/12/15(木) 23:43:28.80 ] PythonのFrameworkについて教えてください Djangoとかあるのは知っているのですが、今現在一番使われているものや、個々の違いなどを教えて頂けませんでしょうか? PHPの場合はCakePHPが一番人気で楽だけど実装が決まってしまう、ZendFrameworkは3番人気だけど、ガチガチにならず各コンポーネントがライブラリのように使えるとかです 宜しくお願いします
191 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 23:44:01.44 ] Djangoでいいお
192 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 23:45:12.02 ] >>190 板違い kohada.2ch.net/php/
193 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 23:49:16.07 ] djangoはオワコン ttp://itpro.nikkeibp.co.jp/article/NEWS/20060410/234868/
194 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 23:57:11.28 ] 個人的にはFWでも上記で書いたようなZednFrameworkのようなタイプが好きなのですが、 PythonのFWは結構ガチガチ(そのFWから抜けるようなものを実装しようとすると難しい、柔軟性が低い)な感じでしょうか? 本屋に行ってみたのですが、Python系の本は他からすると少ないですが、フレームワークは更に少なかったです
195 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 23:57:55.39 ] つ www.slideboom.com/presentations/36000/baker%E3%81%8CDjango%E3%81%AB%E5%87%BA%E4%BC%9A%E3%81%A3%E3%81%9F%E3%81%81 stackoverflow.com/questions/2578540/php-frameworks-codeigniter-yii-cakephp-vs-django opensourcemissions.wordpress.com/2010/06/21/cakephp-vs-django/ cakephp.seesaa.net/article/77158599.html www.relevancefound.com/2008/11/cakephp-vs-django-dilemma/ jasonleveille.com/blog/2009/02/cakephp-vs-django-vs-rails-vs-who-cares-make-a-decision blip.tv/djangocon/switching-addons-mozilla-org-from-cakephp-to-django-4125605 madeout.blogspot.com/2009/08/cakephp-vs-symfony-vs-django-why-i.html d.hatena.ne.jp/Isoparametric/20100426/1272279977 www.oiax.jp/rails/zakkan/promising_web_development_frameworks.html
196 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 23:59:03.54 ] >>194 wsgi とか Wekrzeug とか でぐぐれ
197 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 23:59:59.54 ] 馬鹿には無理
198 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 22:12:52.87 ] PythonとMySQLを連携させるにはいくつかライブラリ(モジュール)があるようですが、 どれが一番使われて、いいのでしょうか? 安定性、速度など(トレードオフあもしれませんが)を重視したいです PythonはcentOSに入っている2.6です TRAC導入時に以前、SQLite用にはpysqliteを入れてはいたのですが PythonはSQLiteの情報の方が見つかりやすい気がします
199 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 22:16:04.11 ] >>197 自己紹介乙!
200 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 22:27:27.67 ] >>193 2006年の情報って…
201 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 03:12:55.30 ] >>198 ttp://taichino.com/programming/1259
202 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 23:30:37.35 ] TurboGearsって www.turbogears.org/en/welcome のどこからダウンロードするんですか? 見当たらないのですが
203 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 23:34:00.33 ] >>202 ttp://www.turbogears.org/2.0/docs/main/DownloadInstall.html
204 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 19:27:03.49 ] >>203 ありがとうございます しかしなんかややこしそうですね・・・ Djangoは普通にダウンロード出来ましたが
205 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 22:23:41.51 ] スレちというか板ち 【Python】TurboGearsスレ Part 1【Framework kohada.2ch.net/test/read.cgi/php/1176022606/
206 名前:デフォルトの名無しさん [2011/12/22(木) 19:09:13.58 ] centOSでIDLEがないのでyum listで調べてみたら、出てきませんでした 何かpython-toolsがどうたらとか海外のサイトに書かれていました じゃぁpython-toolsとは何ぞや、と思って検索するに、なぜかVisual Studioしか出来ません centOSのリポジトリ内に存在するのは確認しました centOSにてIDLEを使用するにはどのようにすればいいのでしょうか? また、python-toolsとはどのようなものなのでしょうか?
207 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 03:03:07.11 ] >>206 IDLEが欲しい理由ってどんなの?
208 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 19:45:59.93 ] IDLE使ってないの? 俺は使ってるけど 俺の使う理由は色、インデント、コピペだな ターミナルからのpythonコマンドではIDLEに慣れると使いにくい
209 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 20:39:18.45 ] 別にEmacsでもPyDevでもPyScripterでも 好きなのを使えばよろし
210 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 01:35:00.86 ] すいません、ローカルにあるCSVファイルを読み込んで、WEBブラウザに 表で表示できるシステムを作りたいのですが、Zopeなんかを使えば 良いんでしょうか。サンプルソースなんかれば場所を教えてもらえると助かります。
211 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 01:52:27.35 ] www.python.jp/doc/nightly/tutorial/floatingpoint.html の訳文についてなんですが、 丸め値を 1 増やしたので、この値は実際には 1/10 より少し小さいことに注意してください; の部分が小さいではなく、大きいではないでしょうか? 原文は Note that since we rounded up, this is actually a little bit larger than 1/10; なので信憑性は高いです。
212 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 05:28:29.13 ] >>210 それくらいならZopeなんか使わんでも出来るだろ
213 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 11:19:37.31 ] >>212 超初心者なので・・・すいません。 いろいろと調べながら考えたのですが、csvファイルを読み込んで、それをprintで出力するような スクリプトをつくれば良いということでしょうか。
214 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 11:30:28.85 ] WebサーバにCGIスクリプトとして実行させるのがお手軽だと思う 雛形はこんな感じ import csv # ...csvを読みこんでHTMLに整形 print "Content-Type: text/html;" print print html
215 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 11:33:16.18 ] import csv f = csv.reader(open('a.csv')) print('<html>\n<head></head>\n<body>') print('<table>') for l in f: print('<tr>') for td in l: print('<td>{}</td>'.format(td)) print('</tr>') print('</table>') print('</body>\n<html>')
216 名前:215 mailto:sage [2011/12/24(土) 11:34:32.41 ] 最後で<html>閉じてない。 そこだけ修正しといて
217 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 13:00:22.12 ] import random random.uniform() みたいに、pythonってモジュール名を頭につけてコマンドを書かなきゃいけないじゃないですか? 何でこういう形式なんでしょうか C++とかはincludeした後、そのまま関数を使えるのに
218 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 13:07:18.00 ] 名前が衝突しないようにでしょう from randam import uniform from randam import * というのもあるから調べるといいよ
219 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 13:11:05.71 ] >>218 ありがとうございます!
220 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 16:30:52.37 ] >>214 , 215 以下のソースでうまくいきました。 ありがとうございました。 import csv csvfile = open("a.csv") f = csv.reader(csvfile, delimiter=' ') print "Content-type: text/html" print print('<html>\n<head></head>\n<body>') print('<table>') for l in f: print('<tr>') for td in l: print('<td>{}</td>'.format(td)) print('</tr>') print('</table>') print('</body>\n</html>')
221 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 16:38:00.42 ] >>217 >C++とかはincludeした後、そのまま関数を使えるのに namespace を知らんのか
222 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 00:28:28.91 ] usingはおまじないか
223 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 00:46:12.94 ] めりくり
224 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 01:06:07.42 ] 質問お願いします。 文字列の"test"をtuple("test")とすると ("t", "e", "s", "t")と分割されてしまい困っています。 これをタプル化したときに分割されないようには出来ないでしょうか?
225 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 01:07:44.02 ] できますん
226 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 01:08:15.65 ] ("test",)
227 名前:デフォルトの名無しさん [2011/12/28(水) 20:40:24.66 ] 文字コードに対応する文字があるか判別する方法教えてください・・・。 0x41と 0x80 を区別したい。
228 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:56:54.11 ] デコードしてみて例外を捕まえる
229 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 22:00:53.06 ] 助かります。
230 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 11:28:46.60 ] pythonからシェルコマンドを実行するには os.system などを使うそうですが、 これにpythonの変数を渡すにはどうやるんでしょうか? たとえば os.system("rm hoge.txt") を file="hoge.txt" os.system("rm ", file) みたいにできないでしょうか?
231 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 11:48:03.91 ] >>230 プログラミング自体、初心者なのかな? os.systemに渡してるのはただの文字列だから、 そういう文字列を作っちゃえばOK。例えばこんな感じ。 file = "hoge.txt" command = "rm " + file os.system(command) 慣れてきたら os.system("rm " + file) とかでもいい。
232 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:17:09.11 ] win32comでExcelを扱うときの質問。 import win32com.client xapp = win32com.client.Dispatch("Excel.Application") として、Excelを使おうとするとき、すでにExcelが起動していると そのプロセスを掴んでしまうようなんだけど、もうひとつExcelを 起動するようにするにはどうしたらいいんだろう。 VBScriptで次のようにすると、既存のExcelプロセスとは別に プロセスが起動するよね。そういうことをやりたい。 Set xapp = CreateObject("Excel.Application") 知ってる方おしえてー
233 名前:230 mailto:sage [2011/12/29(木) 12:24:17.82 ] >>231 >os.systemに渡してるのはただの文字列だから、 アッー!そうでした・・・。ちょっと恥ずかしすぎる質問でした。 ありがとうございました。
234 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:28:33.31 ] どういう用途で使うのか知らないけど、 その変数が外来だとするとセキュリティー的に怖いことをやろうとしてるよ。 * rmコマンドへ渡す引数の注意点: ルートのパスと -rf オプションを指定された場合。 * パイプで別のコマンドが実行可能。 * 変数に意図しない空白が含まれてる場合、別々の引数として解釈される。 もし、変数は固定で安全だとと思う場合でも、何かのミスで変数が上書きされて 意図しないコマンドが実行されるというリスクがあるので、早めに対策するのをお勧めです。 参考 ttp://www.python.jp/doc/release/library/subprocess.html の警告 シェル・インジェクションの項
235 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:25:57.33 ] os.system よりも subprocess.Popen ですよ
236 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:26:29.73 ] >>232 無理
237 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 14:07:55.34 ] >>236 それマジ?ありがとう
238 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:43:18.71 ] >>232 win32com.client.DispatchEx("Excel.Application")
239 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 22:09:10.69 ] >>238 できた。ありがとう!
240 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:32:56.35 ] Exとかやる気ねえなw
241 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:06:23.86 ] まあ本家のWin32APIには"ほにゃららExEx()"とかもあるしね・・・
242 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 08:56:53.08 ] viのスレかと重た
243 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 12:19:42.25 ] Python でcgiを作りたいと思います。 ウェブブラウザーの画面に表示されたボタンを押すと、そのボタンの色が変わるようなサンプルを探して いるのですが、なかなか見つかりません。なんかヒントをもらえると助かります。
244 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 12:24:46.85 ] その程度なら javascript 使え
245 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 12:42:19.33 ] print "Content-Type: text/html;\n" print """<html> <head><title>change button color</title></head> <body><button onclick="this.style.backgroundColor = 'black';">click me</button> </body> </html>""" サンプルはDHTMLでぐぐるといっぱいでてくるはず
246 名前:sage [2012/01/01(日) 14:09:41.97 ] あけまして、おめでとうございます。 namedtupleの名前・値の一覧を取り出す方法教えてください。 dictでいう、dict.items() dict.keys() deict.values() のようなイメージです。よろしくお願いします。
247 名前:246 mailto:sage [2012/01/01(日) 14:15:43.90 ] sage間違えました。
248 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 14:51:46.30 ] >>246 www.python.jp/doc/release/library/collections.html#collections.somenamedtuple._fields
249 名前:246 mailto:sage [2012/01/01(日) 15:41:23.87 ] >>248 ありがとうございます。 _asdict() で辞書に変換してできました。 まだじっくり読んでいないのですが、name-index-valueの一覧も ここを読見込めば出来る様になるのでしょうか。 第2段階として タプル扱いだとindex-value、辞書にするとname-value、 これを一つの表として出力したいのです。
250 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 18:20:39.31 ] >>249 直接的な方法は書いてないかな。。 _fieldsでキーの一覧を得られるので、後はビルトイン関数のenumerateやzipを組み合わせるといい。 for index,value in enumerate(data): for key,value in zip(data._fields, data): for index,(key,value) in enumerate(zip(data._fields, data)):
251 名前:246 mailto:sage [2012/01/01(日) 19:31:08.06 ] >>250 ありがとうございます。できました。 名前と値を個別に取り出してzipで組み合わせて、enumerateの値をindexと見做す。 という事のようですが、考えつきませんでした。 現在、引数がlist型なら形式A、tuple型なら形式B、dict型なら形式Cという デバッグ表示用関数(ネストに対応できていませんが)を練習として作っています。 namedtupleなら形式D、という事をしたいのですが、型の判別方法が判りません。 tupleとnamedtupleを区別する方法を教えてください。typeではダメでした。 typesやisinstanceを調べてみても判りませんでした。 重ね重ね申し訳ありませんが、お願いします。
252 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 20:43:33.19 ] >>251 これはよくはまるポイントかもしれない。 namedtupleはクラスではなくて、tupleを直接継承したクラスを生成する * 関数 * なので。 また、現状では namedtupleのみに 共通するベースクラスがなく、isinstanceでは通常のtupleとの区別が付きません。 (※ ttp://bugs.python.org/issue7796) 例えば今回のケース(_fieldsを使う場合)なら、こうかな if isinstance(obj, tuple): if hasattr(obj, "_fields"): namedtuple用のコード else: 通常のtuple用のコード hasattrは、このケースのみの対策というわけではなく、通常の型を判別して処理を別ける場合でも、 isinstanceの代わりに属性の有無のみでチェックする方法がよく使われます。
253 名前:246 mailto:sage [2012/01/01(日) 22:02:39.85 ] >>252 try: expect: で試行錯誤していました。hasattrの方がスマートです。 やっと本質的なコードに入れます。 ありがとうございました。
254 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:21:17.05 ] hoge/__init__.pyとhoge/_hoge_main.pyの2ファイルからなるhogeパッケージで、カスタム例外 クラスhoge.Errorとこのクラスを継承したサブクラスを作成し、_hoge_main.pyからraiseしている のですが、_hoge_main.py内で、 class Error(Exception): pass のように定義すると、Tracebackの最後で、 hoge._hoge_main.Error と表示されてしまいます。できれば、 hoge.Error と表示されるようにしたいのですが、どのような方法が良いでしょうか? 自分で思いついたのは、 ・__init_.py で、各Errorクラスを定義し直して、_hoge_main.Error = Errorで上書きする ・_hoge_main.pyの各Errorクラスの定義で__module__ = 'hoge' とする の2つですが、あまり良い方法には思えませんでした。 Pythonのバージョンは3.2です。
255 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:48:08.68 ] >>254 __repr__ メソッドを上書きする。 第3者にとってはモジュールのパスが判り辛くなるかもしれないので、その点は気をつけて。
256 名前:255 mailto:sage [2012/01/01(日) 22:59:41.08 ] 読み違えたかもしれない。 hoge.Error がimportされた先のパスで表示されてしまうって問題?
257 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:13:49.82 ] > hogeパッケージで、カスタム例外 クラスhoge.Errorとこのクラスを継承したサブクラスを作成し、... > _hoge_main.py内で、class Error(Exception): pass のように定義すると、 > Tracebackの最後で、 hoge._hoge_main.Error と表示されてしまいます。 よく読むと、Errorがどこで定義されてるのかわからなくなった(汗 2重に定義しようとしてる? hoge/__init__.py で定義すれば hoge.Error だし hoge/_hoge_main.py で定義すれば hoge._hoge_main.Error と表示されます。 推測だけど、やりたい事はこう? hoge/__init__.py で Error クラスを定義して、hoge/_hoge_main.py で from . import Error
258 名前:254 mailto:sage [2012/01/01(日) 23:30:31.06 ] 上手く説明できなくてすみませんでした。 やりたい事は>>257 の最後に書かれている通りであっているのですが、 hoge/__init__.pyで、from . import _hoge_main しているのに、hoge/_hoge_main.py でも from . import Error したら、2つのモジュールが互いにimportするからマズいのでは?と思って 他の方法を探していたのでした。 from . import Errorしても問題が無ければ、そうしたいのですが大丈夫でしょうか?
259 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 00:49:45.14 ] >>258 相互 import では幾つか注意が必要なので、出来れば避けた方がいいです。 相互 import で気をつける点は、トップレベルが実行される時点ではまだimportするモジュールの属性を参照出来ない事。 つまりfrom/importが出来ない。import hogeとして、hoge.Errorを関数内で使うようにする。 後、気になったのは、hoge/_hoge_main.py を直接実行したりしないかという点だけど・・・(名前にmainとあるので) その場合は from . import Error が出来ないかな。 他の対策。遅延import * それ程頻繁に呼び出される関数でなければ、関数内で import する。
260 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 10:20:02.06 ] >>244 javascriptですか。 >>245 とりあえず動きました。 ありがとうございました。 実はインターネット上のサーバーの監視するものを作っていまして、本体はなんとかpythonで 作れたのですが、webブラウザからそのスクリプトを実行する簡素なフロントエンドを作ろうと考えています。 その場合、フロントエンドはpython よりも javascriptの方が適しているのでしょうか。調べているのですが、 なかなか結論が出なくて。
261 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:31:31.92 ] python でいいよ ていうか両方使っちゃだめなのか?
262 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:32:16.33 ] 老若男女、猫も杓子もインターネットを使うようになった今日、 無料情報と有料情報の違いを知らない人が多すぎる。 無料情報は、大半が釣りだと思っておいて間違いない。
263 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 12:39:17.87 ] 釣りを釣りだと分からない人に、無料情報を使うのは難しい
264 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 12:45:09.43 ] おまいらも初詣とか行くときは釣りに気をつけろよ
265 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 16:27:36.16 ] >>251 Python 3.2.2 (default, Sep 29 2011, 23:09:11) > import collections > nt = collections.namedtuple('Point', 'x y') > t = tuple() > nt.__class__ <class 'type'> > t.__class__ <class 'tuple'> > isinstance(t, type) False > isinstance(nt, type) True > isinstance(t, tuple) True > isinstance(nt, tuple) False Python 2.7.2+ (default, Oct 4 2011, 20:03:08) > import collections > nt = collections.namedtuple('Point', 'x y') > t = tuple() > isinstance(nt, tuple) False > isinstance(t, tuple) True > isinstance(nt, type) True > isinstance(t, type) False
266 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 17:23:06.82 ] >>265 namedtuple使ったことないのかな? tはタプルのインスタンスだけど、その nt はタプルを継承した"クラス" インスタンス同士で区別が付くかどうかを比較しないと意味がないよ。 > n = nt(0,0) > isinstance(n, type) False > isinstance(n, tuple) True
267 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 18:02:55.24 ] >>266 使ったことなかったです。 2度目の正直で >>> import collections >>> nt = collections.namedtuple('Point', 'x y') >>> p = nt(0, 0) >>> t = tuple() >>> t.__class__ <class 'tuple'> >>> p.__class__ <class '__main__.Point'> >>> type_p = type(p) >>> p1 = nt(1, 1) >>> isinstance(p1, type_p) True >>> isinstance(p, type_p) True >>> isinstance(t, type_p) False (・∀・)デキタ!!
268 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 18:09:06.62 ] >>267 の追加 >>> nt2 = collections.namedtuple('Space', 'x y z') >>> s = nt2(1, 2, 3) >>> type_s = type(s) >>> type_s <class '__main__.Space'> >>> isinstance(s, type_s) True >>> isinstance(s, type_p) False >>> isinstance(p, type_s) False >>> isinstance(p, type_p) True >>> isinstance(t, type_s) False >>> isinstance(t, type_p) False (・∀・)イイ!
269 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 18:19:19.91 ] 連投すまんとです >>> isinstance(s, (type_p, type_s)) True >>> isinstance(p, (type_p, type_s)) True >>> isinstance(t, (type_p, type_s)) False (・∀・)カンペキ!!
270 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 18:33:18.75 ] >>> isinstance(t, tuple) True >>> isinstance(p, tuple) True >>> isinstance(s, tuple) True >>> tuple == type(t) True >>> tuple == type(p) False >>> tuple == type(s) False >>> isinstance(t, tuple) and tuple == type(t) True >>> isinstance(p, tuple) and tuple == type(p) False >>> isinstance(s, tuple) and tuple == type(s) False 最後のTrue, Falseでtuple, namedtupleを見分けることが (・∀・)デキタ!!
271 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:08:25.94 ] >>270 おめ・・・と言いたいところだけど残念、もう一歩。 そのコードで判別できるのは タプルかタプルを継承したクラスのインスタンスかどうかなので、 例えば、namedtupleで生成したクラス以外の タプルを継承したクラスの場合を考えてみよう。 class Foo(tuple): pass > x = Foo() > isinstance(x, tuple) and tuple == type(x) False これだと namedtupleと同じ結果だから、 xは namedtuple用のコードで処理されることになるけど _fields属性がないので AttributeError になる。 対して _fieldsの有無でnamedtupleかどうかを判別してれば、通常のタプルとして処理されるのでエラーにはならない。 namedtupleで作られるクラスが共通のインターフェースでも継承してくれれば もっと判り易く判別するコードが書けるようになるはずなのだけどね。※1 その辺りの議論はここにあって (No way to find out if an object is an instance of a namedtuple) ttp://bugs.python.org/issue7796 > Detecting _fields is the simplest thing we can do right now. ということで _fields での判別が、現状(<3.2)では最も簡単な判別方法と締められてる。 # ※1 ただし、Pythonでは厳密な型チェックよりも、 # ダックタイピングの利点を活かす為、規格のみのチェックの方が好まれる。
272 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:11:25.05 ] (´・ω・`)ショボーン (´;ω;`)ウッ…
273 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 00:26:36.71 ] >>272 ドンマイ。やりたいことの意図はわからなくはないよ。 isinstance(obj, INamedTuple) みたいな判別をしたい場合の参考にどうぞ namedtupleにインターフェースっぽいものを仕込むサンプル。 ttp://ideone.com/ZVkIv
274 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 01:30:26.44 ] >>> a = bytes.fromhex('00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f') >>> print('{:s}'.format(a)) b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f' bytesを表示した時に全てhexで表示して欲しいんですが、 良い対処方法はないでしょうか? \t と表示されるのではなく、\x09の様に表示して欲しいのです。 binary data を扱っている時に表示桁数が揃っているとdebugし易いんです。
275 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 03:50:30.64 ] >>274 プレフィクスに拘らないなら binascii.hexlify 問題の原因・・・エスケープシーケンスの処理は bytes型のrepr関数内で行われてるので、 対処方法は、それさえ避けるようにすればok。方法はいくつか考えられるけど、 デバッグ用途なら reprモジュール使って独自にフォーマットする例を挙げてみる。 from reprlib import Repr class DebugRepr(Repr): def repr_bytes(self, obj, level): return "b'{}'".format("".join(map("\\x{:02x}".format, obj))) repr = DebugRepr().repr print(repr(a)) 勿論、bytes型限定であれば、上記のrepr_bytesを普通の関数にして使ってもいい。
276 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 13:47:35.71 ] binascii.hexlifyでいくことにしました。 ありがとうございました。 binascii.b2a_qp(a)がいい感じだったんですけどねぇ。。。 >>> import binascii >>> binascii.hexlify(a) b'000102030405060708090a0b0c0d0e0f' >>> binascii.b2a_uu(a) b'0 $" P0%!@<("0H+# T.#P \n' >>> binascii.b2a_base64(a) b'AAECAwQFBgcICQoLDA0ODw==\n' >>> binascii.b2a_qp(a) b'=00=01=02=03=04=05=06=07=08=09\n=0B=0C\r=0E=0F' >>> binascii.rledecode_hqx(a) b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f' >>> print(a) b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f' >>> binascii.rlecode_hqx(a) b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f' >>> binascii.b2a_hqx(a) b'!!%#!`3&"JF)#3S,$!d1$`'
277 名前:デフォルトの名無しさん [2012/01/05(木) 21:45:36.35 ] [5,2,1,0,5]のようなリストがあるとき、最大値の要素番号を取得するにはどうしたらいいでしょうか? 上のリストのように最大値を持つものが2つ以上ある場合は0,4のどちらでもokです。 できるだけ高速に取得したいです
278 名前:デフォルトの名無しさん [2012/01/05(木) 22:23:05.09 ] maxとindex使えばいいだけですね。すれ汚し失礼しました
279 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:45:26.14 ] dive into python 3の日本語版サイトが英語になってる。 HTMLのリンクも切れてる。読んでた途中の俺涙目。
280 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:04:56.74 ] Mark Pilgrim半失踪の煽りを喰らったか
281 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:16:38.61 ] >>279 レポジトリなかったかな・・とぐぐってみた。中身確かめてないけど hg clone https://code.google.com/p/diveintopython3-ja/
282 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:30:36.50 ] >>281 の生存確認 clone後にbuild_ja.pyを実行しないといけないけれどlocal環境で読めてます。 資料系のsiteはscrapbookの使用をお勧めします。 それかnetに繋げれなくても、local環境で参照できるように設定しておくとか。 >>280 Mark Pilgrim失踪の話を初めて聞いたのですが顛末を教えて頂けないでしょうか?
283 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 14:53:08.91 ] >>282 ローカルの設定にとまどいましたが日本語版の生成ができました! ありがとうございます。 重要なものはローカルにとっておくように習慣つけようと思います。
284 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 12:40:42.61 ] Python(Windows版)インストールに関してご存知の方がいれば教えてください. バージョンは2.5でも3.2でも変わらないのですが,msiを実行した直後にWindowsInstallerのエラーが出て以上終了します. もしかしたらOSが未対応なのかもしれなくて,WindowsXPのMedia Center Edition SP3です. このOSではPython環境を導入できないのでしょうか?
285 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 13:14:09.79 ] msiが壊れてるとか(MD5を確認)、64bit版だったりとか、ウィルス対策ソフトが邪魔してるとか
286 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 13:47:51.31 ] >>284 エラー内容を書け
287 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 21:04:38.43 ] >>286 python-3.2.2.msi "Install for all users"を選択した後にエラー. 特に提示できそうな内容がないんだけど,WindowsInstallerのエラー署名に関して. AppName: msiexec.exe ModName: msihnd.dll PythonがMedia Center Editionに対応してないと明記されているページが見つからないので, もしあれば教えてください.諦めが付きます.
288 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 21:09:40.73 ] for all users ってことは管理者権限でインスコしないといけないんじゃない? もし他の選択肢(for current userとか)があればそっちを試してみるとか
289 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 21:19:26.94 ] >>288 レスthx 管理者権限だし,試せる選択肢は全て試し済ですね.
290 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 21:23:57.21 ] WindowsInstallerのバージョンは?
291 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 21:44:23.75 ] >>290 msiexecで確認した. V4.5.6001.22159
292 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 21:46:53.74 ] cygwinにもpython付いてるよ
293 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 22:19:54.22 ] エラーの原因がわからないと何ともいえないので、まずは詳細ログ出力 msiexec /i python-3.2.2.msi /L*v python.log Media Center Editionは知らないので他の方に任せた。 他に気になった点、 2.5って公式では今はソースのみ配布になってるはずだけど、 MSIということはactivepythonの方だったりする?
294 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 22:26:19.81 ] 2.5.4のmsiなら落とせるよ www.python.org/download/releases/2.5.4/
295 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 23:00:56.59 ] >>294 それはセキュリティfixの当たってない古いバージョン activepythonだったら 2.5.6 の msi がある www.activestate.com/activepython/downloads
296 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 23:05:48.60 ] >>293 こんなログの吐き方があるんだ. 勉強になります. ログは吐いたけど出力量が多いのと端末情報も多少入ってるので全upは厳しいかも. 何かgrepしたい文字列とかないですか? ちなみにログの最後は以下で終わってる. MSI (c) (A4:50) [23:00:15:979]: Note: 1: 2235 2: 3: ExtendedType 4: SELECT `Action`,`Type`,`Source`,`Target`, NULL, `ExtendedType` FROM `CustomAction` WHERE `Action` = 'SelectDirectoryDlg'
297 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 23:43:41.36 ] grep -i error
298 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 00:53:23.34 ] >>296 関連あるかどうか分からないけど、追加で確認事項 wscript.exeのバージョン確認 MSI内のカスタムアクションでwscriptが使われてるらしく、 WScriptのバージョンアップでインストールが成功した報告例あり。 ttp://mail.python.org/pipermail/python-bugs-list/2004-December/027038.html MSIログは、"Return value 3" になってるとこを検索。エラーで失敗してるアクション)
299 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 01:50:53.65 ] インストーラーをNASとかローカルHDD以外から実行するとエラーになるのあったりするけどその辺はどう?
300 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 02:27:02.55 ] よろしくお願いします txt = "abc123, aaaaa, abc3210" txtのような文章があるときに、re.compile('abc(\d+)')のような正規表現でsearchをかけています。 この場合に、最初に一致したものだけでなく、txtに含まれる一致するもの全てを取り出したいのですが、どのように書けばいいのでしょうか?
301 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 02:53:28.89 ] findall,finditerを使う
302 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 13:49:37.47 ] >>298 WScript.Echo("WScript.Version:" & WScript.Version) 5.7
303 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 18:02:27.96 ] 他に誰か同じOSの人いればそれで試してもらった方が早いと思うけど。
304 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 02:41:15.02 ] Dive Into Python 3の日本語訳直ってるね
305 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 16:35:28.76 ] python-twitterでGetFollowers()を使うと twitter.Api instance must be authenticatedのエラーが出るようになった。。。 Oauth関連が原因なんでしょうか…原因分かる人いたらよろしくお願いします。
306 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 17:07:35.54 ] >>304 ほんとだ 金曜日にローカルで日本語版作ったけど結局待てば直ってたわけかw
307 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 00:31:33.89 ] >>306 >>279 で書いた時みたいに涙目にならないようにlocal環境構築しておく。 急げ、後悔先に立たずだ
308 名前:デフォルトの名無しさん [2012/01/11(水) 18:03:06.04 ] tkinterのテキストボックスを検索してタグを付けたいのすが、下記のコードだと正規表現を使うと、当たり前ですがキーワードの長さが取得出来ません。"(Y|y)ou"は当然7文字カウントしてしまいます。どうしたら検索結果ぴったりにタグが付けられるのか全く思いつきません。 from tkinter import * def search_it(keyword_from,widget): ...if "C" not in widget.mark_names(): ......widget.mark_set("C","1.0") ...try:widget.tag_delete("it") ...except:pass ...keyword=keyword_from.get() ...keyword_length=len(keyword)#正規表現を使うとlengthがおかしなことになる。 ...ini=widget.search(keyword,"C",exact=False,regexp=True) ...end=ini+"+"+str(keyword_length)+"chars" ...widget.tag_add("it",ini,end) ...widget.tag_config("it",foreground="#FF0000",font="arial 18 bold") ...widget.mark_unset("C") ...widget.mark_set("C",end) ...widget.see(ini) root=Tk() ent=Entry(root) ent.pack() btn=Button(root,text="search",command=lambda:search_it(ent,tex)) btn.pack() tex=Text(root) tex.pack() root.mainloop() import 2ch try:2ch.tell_me_a_hint(search_it)#お願いします。 except:pass
309 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 18:12:47.46 ] >>308 モジュール名の先頭に数字は使えない www.python.jp/doc/release/reference/lexical_analysis.html#identifiers
310 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 18:35:11.93 ] >>308 Tkinter.Text.searchで得られるのは文字が見つかった開始位置のみだよね? マッチした文字に対して長さを調べるか、終了位置を別に調べるようにする。 多分、re.search使った方が簡単。 他の方法。他の正規表現の内容次第だけど、大文字小文字の区別のみなら Tkinter.Text.search の nocase=True オプションで正規表現使わずに済ませられる。
311 名前:308 mailto:sage [2012/01/11(水) 20:13:08.36 ] >>309 素早い添削有難うございます。すっかり忘れていました。 >>310 教えて頂いたオプションで済みそうですが、reを使ってトライしてみます。 有難うございます。
312 名前:310 mailto:sage [2012/01/11(水) 20:35:39.55 ] >>311 countオプションでマッチした長さを得られるみたい だけど、値の受け取り方が・・・Tcl/Tk知らないとちょっと解りにくいね cnt = tkinter.IntVar() ini = widget.search(keyword,"C",exact=False,regexp=True,count=cnt) keyword_length = cnt.get() NOTE: re.searchだとPythonの正規表現、regexp=TrueではTclの正規表現が使われる。 pythonからはre.searchの方が柔軟に使えそうだけど、pyhon<=>tk間での文字コード絡みの問題はどうなってるのか知らない。
313 名前:308 mailto:sage [2012/01/11(水) 21:14:03.01 ] >>312 わー‼できたー! 重ねて御礼申し上げます。 コードの意味は確かによく分かりません。
314 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 13:25:54.59 ] なんでこんなことになってるの? >>> False <= 2 True >>> False <= -2 False >>> int(False) 0 >>> int(True) 1 >>> 1 == True True >>> 0 == True False >>> True + 1 2 >>> 1 + True 2 >>> n = 1 >>> n += True >>> n 2 >>> m = True >>> m += True >>> m 2 >>> x = True >>> x True >>> x += 0 >>> x 1
315 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 13:28:26.00 ] >>> True and True True >>> True and 1 1 >>> True * True 1 >>> True / True 1.0 >>> True ** True 1 >>> 1.0 == True True >>> 1.01 == True False 正直、迷惑なんですけど 特に最後の >>> 1.0 == True True のくせに >>> 1.01 == True False とか ∧___∧ / / / / ⊂( ・∀・) 、,Jし // パン (几と ノ ) て. //'|ヽソ 彡 Y⌒Y `Д´) ←Guido /ノ / | \ 彡 ヽ/、/ヽ/ ヽ/
316 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 14:49:21.83 ] いや、別に。
317 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 15:12:15.41 ] なにが迷惑なのかまったくわからん
318 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 15:18:19.22 ] 何がおかしいのか分からない
319 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 15:36:57.71 ] boolはintのサブクラス というか1.0とTrueを比較したいと思うことがあんまりない
320 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 16:08:08.43 ] >>> bool(1.01) True >>> bool(1.0) True
321 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 16:34:29.39 ] こういうことか >>> float(True) 1.0
322 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 16:56:00.12 ] ワロタ >>314-315 は CS を知らんのだな >>> True and 3 3 >>> True & 3 1 >>> 3 and True True >>> 3 & True 1 >>> True and 2 2 >>> True & 2 0 >>> 2 and True True >>> 2 & True 0
323 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 17:03:02.30 ] short-circuitのの話ではなくTrueとFalseを1と0と同じように扱ってるところを 疑問に感じてるんだろう
324 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 17:05:34.63 ] というか&&じゃやなくて&か…CSって何の略?
325 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 17:10:31.84 ] customer satisfaction
326 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 17:10:50.82 ] >CSって何の略 と言ってるようではお里が知れるというもの
327 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 17:14:12.82 ] >>326 くだすれでそんなドヤ顔されても困っちゃいますYO とっとと何の略か答えてどうぞ
328 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 17:49:51.64 ] > CS =ChinShu > DIを観測すると頻繁に観測される特異状態。β波を大量に発する。 > 近年、β波は低下してきている。 kumagaya.tumblr.com/post/197982477/di-dame-insei-dii-dame-insei-index あー、あのころが懐かしいよ
329 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 17:52:05.94 ] certified secretary
330 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 18:37:09.34 ] 主に互換性の為(シーケンスのインデックスにブール値が使われたりもする) ブール値の算術演算は許容されてるけど、ブール値の直接比較はやらないようにとスタイルガイドで言及してるよ。 bool型がどうしてそうなってるか、詳しく知りたければPEP読んで ttp://www.python.org/dev/peps/pep-0285/
331 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 19:14:30.26 ] python2.7.2 windows xp です。 状況 キーに英単語・数字・数値 が使われている辞書をキー順でソートしたい。 数値は、int・float・long いずれも使用されている。 ソート条件 1: 英字は、大文字・小文字を区別しない。 sorted(dic.items(), key=lambda x: str(x[0]).lower()) 2: 数字は、数値と区別しない(数値として扱い小→大)。 3: ソート自体は文字コード順で行う(3系でも動くよう比較値の型を統一)。 質問1 1と2と3が両立する、sortedに渡すためのkey関数が浮かびません。 レシピをお願いします。 質問2 数値・数字を下記の様な文字列に変換するstr.format()の書き方を教えてください。 小数点前と小数点後の可能な最大桁数も知りたいです(元が数値なので制限があるかと)。 Python 2.7ja1 documentationの書式指定ミニ言語仕様を読みましたが、 具体的な書き方が解かりませんでした・・・。 2:の解決に数値・数字とも最大桁数に揃えて文字列扱いすれば…と思った次第です。 0.12 0000.120 1 0001.000 1.2 0001.200 1.234 0001.234 11 0011.000 12.34 0012.340 質問もうまく書けていないと思いますが、よろしくお願いします。
332 名前:331 mailto:sage [2012/01/13(金) 19:20:58.80 ] すいません。最後の例が解かりずらいので。下記です。 format前 0.12 1 1.2 1.234 11 12.34 format後 0000.120 0001.000 0001.200 0001.234 0011.000 0012.340
333 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 20:07:37.19 ] '%08.3f'
334 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 20:44:33.03 ] >>331 これでほしいものになってるかちょっと分からんけど…… keyfunc()は以下のようなタプルを返す関数 1.23 -> ('', 1.23) 'Python2.72' -> ('python\0', 2.72) '1 + 1 = 2' -> ('\0 + \0 = \0', 1.0, 1.0, 2.0) import re pattern = re.compile('\d+(?:.\d+)?') def keyfunc(x): if not isinstance(x, basestring): return ('', x) xs = [] def matched(m): xs.append(float(m.group())) return '\0' s = pattern.sub(matched, x) return tuple([s.lower()] + xs)
335 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 20:58:55.60 ] ああこれじゃダメだな、ごめんごめん
336 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 01:01:17.66 ] >>331 質問1 以下、手抜きコードだけど、たたき台くらいにはなるかな? 考え方の基本は334と同じ、複数の条件でソートする場合はタプルを返す関数を渡すとすっきりする。 # for key,val in sorted(dic.items(), key=keyfunc): def keyfunc(keyval): key,_ = keyval try: n = float(key) s = "" except (TypeError, ValueError): n = float("NaN") s = key.lower() return (s, n) 参考: 辞書順ソートで数字は数値として比較する(例 バージョン番号つきファイル名のソート) codepad.org/eEXhZoJv
337 名前:336 mailto:sage [2012/01/14(土) 06:57:24.77 ] "inf" や "nan" って文字列も数値扱いになるので、 float(key) の例外のみでの判断はまずいかもしれない。 型が混在する場合、3.xでのbytes型の扱いに注意。3.xではそれぞれ別のキーになる。 print({"foo": 1, b"foo": 2})
338 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 14:04:16.98 ] まじか これはひどい
339 名前:331 mailto:sage [2012/01/14(土) 15:58:15.31 ] >>333-337 ありがとうございます。動きました。 >>335-335 >"inf" や "nan" って文字列も数値扱いになるので〜。 3行(INF、NAN、 try中のif文)追加してみました。 目的は達しますが何だか…今はこれしか浮かびません。 def keyfunc(keyval): INF = float("inf") NAN = float("nan") key,_ = keyval try: n = float(key) if (n == INF) or (n != n):raise TypeError s = "" except (TypeError, ValueError): n = float("NaN") s = key.lower() return (s, n) すいません追加質問です。return (s, n) をreturn (n, s) にしてみたところ、 下記の様に?な結果がでました。理由が判る方、解説をお願いできないでしょうか。 1 1.234 ABC 1.2(str) KING JUN 0.12(str)
340 名前:331 mailto:sage [2012/01/14(土) 16:01:24.81 ] >>335-335 → >>336-337 です。 全角を使ったのですが、インデントが全然効いていません…。
341 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 16:17:05.01 ] 馬鹿には無理
342 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 16:19:31.30 ] >>341 自己紹介乙
343 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 19:41:42.99 ] >>340
344 名前:デフォルトの名無しさん [2012/01/14(土) 20:03:36.08 ] tracerouteを行なった結果をテキストファイルに出力したものをから、後ろの3つの数字だけを 別のテキストファイルに出力したいのですがどのように書けばよいかわかりません。 テキストは以下のような形になっています。よろしくお願いします。 traceroute to ja.wikipedia.org (208.80.152.2), 30 hops max, 60 byte packets 1 ntt.setup (192.168.1.1) 0.121 ms 0.134 ms 0.159 ms 2 118.23.8.17 (118.23.8.17) 6.037 ms 6.577 ms 7.064 ms 3 118.23.5.137 (118.23.5.137) 4.971 ms 5.388 ms 5.368 ms 4 122.1.164.213 (122.1.164.213) 7.556 ms 9.341 ms 11.167 ms 5 60.37.55.165 (60.37.55.165) 6.195 ms 6.151 ms 6.154 ms 6 60.37.27.89 (60.37.27.89) 6.470 ms 5.355 ms 5.761 ms 7 ae-5.r21.tokyjp01.jp.bb.gin.ntt.net (129.250.11.53) 5.790 ms 7.090 ms 6.670 ms 8 as-2.r21.snjsca04.us.bb.gin.ntt.net (129.250.4.44) 114.218 ms 113.157 ms 113.279 ms 9 equinixexchange.ir1.sanjose-ca.us.xo.net (206.223.116.85) 122.223 ms 122.167 ms 122.115 ms 10 vb2001.rar3.la-ca.us.xo.net (207.88.13.110) 125.873 ms 132.449 ms 125.843 ms 11 vb15.rar3.dallas-tx.us.xo.net (207.88.12.45) 149.345 ms 149.826 ms 149.540 ms 12 207.88.14.42.ptr.us.xo.net (207.88.14.42) 182.000 ms 182.215 ms 181.906 ms 13 w006.z207088246.xo.cnc.net (207.88.246.6) 187.915 ms 187.107 ms 187.082 ms 14 rr.pmtpa.wikimedia.org (208.80.152.2) 186.903 ms 186.520 ms 186.758 ms
345 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 20:14:19.14 ] エポックからのミリ秒文字列をdatetimeに変更したいのですがどうしたらよいでしょうか。
346 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 21:07:59.69 ] >>339 ソート結果がおかしくなる原因:float("nan") NANは不定値なのでこういう振る舞いをする。当然ソート結果はおかしくなる。 NAN >= 0 # False NAN <= 0 # False NAN == NAN # False NAN is NAN # True 文字列の時は数値が比較されることはないはずなので float型ならなんでもいいと思ってて、不用意にnanいれてしまったのが原因かな。 タプルを返す時は、なるべく要素数と型を揃えた方が都合が良いんだけど、 気にならなければ、文字列の場合は1要素のタプルを返すでもok 一応、文字の時・数値の時で 要素数と型を揃えたタプル(n, s) を返す場合だと、 例えば、文字列の時に返す数値(n)を float("-inf") や float("inf") とすると、 文字優先・数値優先のソートが可能になります。
347 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 21:16:08.78 ] >>344 import re, fileinput findall_ms = re.compile(r"(\d+\.\d+) ms").findall for line in fileinput.input(): print(" ".join(findall_ms(line))) # python findall_ms.py < a.dat > b.dat
348 名前:331 mailto:sage [2012/01/14(土) 23:22:57.11 ] >>346 重ね重ねありがとうございます。 >NANは不定値なのでこういう振る舞いをする。当然ソート結果はおかしくなる。 n!=n(NaN!=NaN)という条件を書いているのだから気付くべきでした。 文字列のinf、NaNは下記で回避 INF = float("inf") NAN = float("nan")←不要に気付いたので削除します。 if (n == INF) or (n == -INF) or (n!=n): raise TypeError 文字列の時に返す数値 float("inf") で、先に進める事にします。この後もキーがタプルの場合の処理。要素が日本語の時は 文字コードではなくその文字を表示。ネストしていたらどうするか等、問題山積みです。 デバック用自家製pprintの道は険しいです。 またお世話になる事は確実です。今後もよろしくお願いします。
349 名前:デフォルトの名無しさん [2012/01/14(土) 23:28:34.42 ] >>347 ありがとうございます。
350 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 04:49:14.94 ] >>345 datetime.fromtimestamp
351 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 08:38:28.51 ] floatで変換するのがダメならast.literal_eval使う手もある
352 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:20:52.01 ] VPythonって何?
353 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 19:19:12.34 ] UNIX系OSのシェルで実行するPythonスクリプトを作成しているのですが、 パイプを使った標準入力の受け取り方について良い方法を探しています echo "hoge" | ./test.py で、"hoge"を取得して処理をしたいという状況です sys.stdinを使用して取得まではできたつもりなのですが、 単純に ./test.py といったパイプ無しでの実行のときに一定時間後落ちます パイプでの標準入力が無い場合は別の処理をしたいのですが、良い方法がありますでしょうか よろしくお願いします
354 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 19:32:38.64 ] すみません、できたっぽいですorz 勘違いしてるといけないので一応、書いておきますと sys.stdin.isatty() を確認しました
355 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 02:28:29.56 ] >>351 他の単語で不都合が出そう Trueとか >>348 ソートに使う関数(1度のソートで複数回呼ばれる)ってことで、出来るだけシンプルにしようと思ったんだけど 他の型にも対応する&デバッグ専用であればパフォーマンスより拡張性優先にした方がいいかな。 try/except による判別では、対応する型が増えるとネストが深くなりそうなので 明示的に、型による分岐にした方が良さそうです。率直に記述するなら if isinstance の列挙。 ttp://codepad.org/E0PEyX7Q >自家製pprint 簡単な実装方法としては、pprint.PrettyPrenter や repr(reprlib).Repr のサブクラスを作って拡張する方法があるよ。
356 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 18:10:16.42 ] 突然だけど、このページの文字コードの解説が分かりやすかった lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
357 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 10:16:41.48 ] pc11.2ch.net/test/read.cgi/tech/1217836194/339 339 :デフォルトの名無しさん:2008/08/23(土) 08:36:00 PythonのUnicodeEncodeErrorを知る lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html よくまとまってた。あとで読む
358 名前:331(348) mailto:sage [2012/01/17(火) 21:13:41.51 ] >>355 コードサンプルありがとうございます。参考にさせて頂きます。
359 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 23:43:18.40 ] setdefaultencoding 禁止
360 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 21:46:40.56 ] elementtreeに読み込まれたxmlの任意のelementを取得し、 そのelementの親となっているelementを返すコードを書きたいのですが検討が付きません。 サンプル等教えて頂けないでしょうか?
361 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 23:19:16.66 ] ElementTreeの要素は親要素への参照を持たないので ひと手間かける必要がある effbot.org/zone/element.htm#accessing-parents でもlxmlなら直接書ける lxml.de/tutorial.html#the-element-class >>> root is root[0].getparent() # lxml.etree only! True
362 名前:360 mailto:sage [2012/01/18(水) 23:47:03.94 ] >361 ご回答有難うございます。 ElementTree以外のxmlライブラリ利用も考えてみましたが、 なるべく標準ライブラリで済ませたいため今回はlxmlは見送ろうと思います。
363 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 00:24:47.15 ] list = [apple1,apple3,apple4,apple2,banana2,banana1,banana5,banana3,banana4] こんな感じで末尾に数字つきの文字列のリストがあったとして これをapple1,apple2,apple3,apple4,banana1,banana2....という風に リスト内の順番を数字順に並び替えるにはどうするのが1番早く出来ますでしょうか?
364 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 00:27:57.70 ] L = ['apple1','apple3','apple4','apple2','banana2','banana1','banana5','banana3','banana4'] L.sort()
365 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 00:54:39.63 ] >>364 なんと1瞬・・・pyてょnすげーです ありがとうございます・・・
366 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 01:36:40.63 ] while 文の中で、かなり時間のかかる処理を行うのですが、キーボードから入力で、breakさせ たいと考えています。どんなやり方があるでしょうか。
367 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 01:45:09.69 ] Ctrl+C
368 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 04:09:42.80 ] ttp://d.hatena.ne.jp/kakurasan/20100208/p1 ttp://www.slideshare.net/atsuoishimoto/python-9707497
369 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 17:58:23.24 ] PYTHONとC++との組み込みと使い方に詳しいページってありますかね?
370 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 18:05:31.70 ] 特定のシステム上のpythonが使えるメモリの上限値を調べる事って出来ますか? 具体的にはandroid端末のsl4a上で使えるpythonのメモリの上限値を調べたいです
371 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 22:29:53.24 ] 住所の文字列を渡して、google mapがブラウザに表示されるスクリプトを探しているのですが どっかに無いでしょうか?
372 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 23:19:47.06 ] >>371 import webbrowser, urllib webbrowser.open('maps.google.co.jp/maps?q= ' + urllib.quote(u'東京都千代田区永田町1丁目7番1号'.encode('utf-8')))
373 名前:デフォルトの名無しさん [2012/01/31(火) 23:48:02.65 ] www.nslabs.jp/monkey-python-02.rhtml#s3 このサイトを見て次のようにプログラムを組んだのですが、うまくいきません。 # -*- coding:utf-8 -*- import Tkinter def on_clicked(): print "ボタンが押された!" window = Tkinter.Tk() button = Tkinter.Button(window, text = "押してください。", command = on_clicked) button.pack() window.mainloop() 本当だったら、端末からスクリプトを実行したら、ウィンドウが出て、ボタンを押すと”ボタンが押された!”と表示されるはずなのですが…
374 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 23:53:05.34 ] 失礼。どうなるか書くのを忘れてました。 実行したら何も出ずに終了してしまいます。 あまりにもくだらない質問かもしれませんが、ご教授おねがいします。
375 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 23:59:43.70 ] >>373 端末って本当に端末?アイコンをダブルクリックで実行とかしてない? とりあえずOSとPythonのバージョンを
376 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 00:05:07.20 ] >>375 あぁ…。ほんと色々書くの忘れてますね…。申し訳ない。 Ubuntu Linux 11.10 Python 2.7 です。 端末から実行してます。 対話モードで四則演算とか 簡単なスクリプト print "hoge" とかならできるので、端末の使い方を誤っているわけではないと思います。
377 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 00:22:10.65 ] ああ、そういうことか。インデントするのはprint文だけでいいよ >>373 だとon_clicked関数を定義するだけで呼びださないスクリプトになってる def on_clicked(): print "ボタンが押された!" window = Tkinter.Tk() button = Tkinter.Button(window, text = "押してください。", command = on_clicked) [...]
378 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 00:42:14.08 ] >>377 できました! ありがとうございます。 今回の失敗は、 def on_clicked(): print "ボタンが押された!" で関数を定義して、その続きもインデントしたままだと、その内容もon_clicked関数の中身として処理されてしまう。 という解釈でいいでしょうか。
379 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 00:55:18.69 ] >>378 です。 > 字下げするのを止めたところがその関数の終わりになります。
380 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 01:01:07.43 ] >>379 ありがとうございます。 少しかじった程度のC言語のノリで字下げしまくってたら、Pythonでそれは命取りでした。 字下げを使うというのがPythonの大きな特徴だと言うのに…。 助かりました。ありがとうございます。
381 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 01:42:02.28 ] >>380 できたならいいけど。 C言語のノリで字下げって、Cでも普通はそんな字下げはしないよ…… Cでは`}'を入力したらエディタが勝手に字下げを1段戻してくれたけど、 Pythonでは`}'を入力するかわりに字下げを戻すんだ。
382 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 16:44:39.87 ] Pythonの書きやすさは、エディタの能力によって大きく左右される。
383 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 17:02:38.15 ] >>373 の行頭からの連続した半角空白がインデントされて見えてる人いる? いたら環境教えてほしい
384 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 17:22:13.92 ] v2cだと半角spcすら見えない 2ch mateで1個分
385 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 17:34:17.52 ] >>383 dat を直接見ればよかろう。 Jane Style なら >>373 にカーソルを合わせれば見えるし。
386 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 18:18:10.45 ] >>384 > 2ch mateで1個分 ああやっぱりそういうブラウザあるのか。どうもありがとう 興味ある人向け www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/struct/text.html#h-9.1
387 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 04:19:08.62 ] インデントなら navi2ch 最強。
388 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 18:15:56.95 ] Dive into Python を読んでいますが、 >>> by = b'd' をそのままコピペすると >>> >>> by = b'd' File "<stdin>", line 1 >>> by = b'd' ^ SyntaxError: invalid syntax というエラーが出てしまいます by = b'd' だけコピペするのが面倒なのですが何か良い方法はありませんか? >>> sys.ps2 '... ' >>> sys.ps1 '>>> ' というので設定すればいけるのかな?と思いましたがよく分かりませんでした。
389 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 18:32:01.75 ] www.diveintopython.net/download/diveintopython-examples-5.4.zip
390 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 18:33:04.82 ] そのくらいコピペじゃなくて自分で入力しよう
391 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 18:33:33.83 ] >>389 PCが物故割れた
392 名前:デフォルトの名無しさん [2012/02/02(木) 21:55:31.54 ] Tkinter の raise と lower の使い方がよくわかりません。 下のTcl/Tkスクリプトと同じ動作をTkinterで実現するにはどうしたら良いでしょうか? #!/bin/sh # the next line restarts using wish \ exec wish "$0" "$@" set flag 0 canvas .c0 -bg "white" canvas .c1 -bg "green" pack .c0 pack .c1 -in .c0 bind . <1> {if {$flag == 0} {lower .c1; set flag 1} else {lower .c0; set flag 0}}
393 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:34:33.48 ] 1/6000 * 1/3000 * ... ぐらいの桁の掛け算を何度も繰り返すのですが 桁落ち、アンダーフローなどが心配で、対数か何かを使ってどうにか出来ないでしょうか? ふざけた質問だと思いますがよろしくお願いします。
394 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:42:45.79 ] 有理数として表現できるなら、 fractions 一択 詳しくは、 diveintopython3-ja.rdy.jp/native-datatypes.html#fractions ネイティブデータ型 - Dive Into Python 3 日本語版 有理数の事で悩んでいたんなら、>>393 は少なくとも diveintopython3-ja.rdy.jp/table-of-contents.html#native-datatypes に一通り目を通さなければならない。 時間に余裕があるなら、こっちも diveintopython3-ja.rdy.jp/index.html
395 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:48:41.45 ] >>394 fractions見てみましたが使えそうです。 早い回答ありがとうございました。 また一度Dive Into Python3も熟読してみます。
396 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:50:16.64 ] >>394 を修正 有理数として表現できるなら、fractions 一択 2.7でも3.0でも使えるよ。 有理数の事で悩んでいたんなら、>>393 は少なくとも diveintopython3-ja.rdy.jp/table-of-contents.html#native-datatypes に一通り目を通さなければならない。 他の便利な型について詳しくは、 diveintopython3-ja.rdy.jp/native-datatypes.html#fractions ネイティブデータ型 - Dive Into Python 3 日本語版 時間に余裕があるなら、こっちも diveintopython3-ja.rdy.jp/index.html
397 名前:396 mailto:sage [2012/02/03(金) 19:55:53.94 ] >>395 実は私も最初から読んでいる所なんだ。 で、昨日ちょうど読んだ後だったから、こんなに速い回答が出来たんだ。 ああ、もうっ! 有理数として表現できるなら、fractions 一択 2.7でも3.0でも使えるよ。 有理数の事で悩んでいたんなら、>>393 は少なくとも diveintopython3-ja.rdy.jp/native-datatypes.html#fractions に一通り目を通さなければならない。 他の便利な型について詳しくは、 diveintopython3-ja.rdy.jp/table-of-contents.html#native-datatypes ネイティブデータ型 - Dive Into Python 3 日本語版 時間に余裕があるなら、こっちも diveintopython3-ja.rdy.jp/index.html
398 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 20:07:13.56 ] どんだけーw
399 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:02:30.45 ] >>395 これも読もう ユニットテスト - Dive Into Python 3 日本語版: diveintopython3-ja.rdy.jp/unit-testing.html
400 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:22:29.16 ] 関数の定義の仕方によってはそうでない使い方も出来ますが、 デコレータは一般的にはクロージャみたいなものになるという解釈でいいでしょうか。 関数Aを関数Bで包んだ場合は、関数B内で定義した関数Cを返すようなので。
401 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 13:33:00.30 ] 以下のように、先頭に整数文字列の値を使って 25, 大阪府 2, 青森県 1, 北海道 47, 沖縄県 以下のようにソートしたいと考えています。 1, 北海道 2, 青森県 25, 大阪府 47, 沖縄県 python でスマートにソートするにはどんな方法が考えられますかね。
402 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 13:51:03.67 ] >>> L = ["25, 大阪府", "2, 青森県", "1, 北海道", "47, 沖縄県"] >>> L.sort(key=lambda e: int(e.split(',')[0].strip())) >>> print '\n'.join(L) 1, 北海道 2, 青森県 25, 大阪府 47, 沖縄県
403 名前:デフォルトの名無しさん [2012/02/05(日) 15:57:36.13 ] pythonの勉強をしようと思い coreblog.org/ats/minpy-web-is-now-free-to-read ここのみんなのPythonってのを呼んでサンプルを実行してるんですが 46ページの ドキュメントルートのcgiserver.py↓ import SimpleHTTPServer SimpleHTTPServer.test() を実行して cgi-bin/test.py↓ #!/usr/bin/env python print "Content-type: text/html\n" print "<html><body>Python is awesome !</body></html>" にブラウザでアクセス(127.0.0.1:8000/cgi-bin/test.py )しても test.pyの中身が表示されるだけ(つまりファイルは見えている)でpythonとして動いてくれないです。 cygwinでやってるのですが、それが駄目とかってありますか? OS:Windows7 pythonのバージョン2.6です。 cgiserver.pyを実行しているログには↓のようなものが出ます $ python server.py Serving HTTP on 0.0.0.0 port 8000 ... ********** - - [05/Feb/2012 15:52:51] "GET /cgi-bin/test.py HTTP/1.1" 200 - ********** - - [05/Feb/2012 15:52:51] code 404, message File not found ********** - - [05/Feb/2012 15:52:51] "GET /favicon.ico HTTP/1.1" 404 - 何か原因が分かりましたらお願いします
404 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 16:09:00.45 ] >>403 どこのページかくらい書けよ SimpleHTTPServerじゃなくてCGIHTTPServer
405 名前:403 mailto:sage [2012/02/05(日) 16:15:21.51 ] >>404 動きました。ありがとうございます。 前のページのプログラムと同じと思い込んでいました。 一応ページは書いておいたつもりでしたが↓ coreblog.org/ats/minpy-web-is-now-free-to-read ここのみんなのPythonってのを呼んでサンプルを実行してるんですが 46ページの
406 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 16:39:17.45 ] ローカル環境(ampps)でDjangoのお勉強したいんですがインストールの仕方がわかりません、誰かAMPPS使ってる方いませんか?
407 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 16:51:40.89 ] >>401 L = ['25, 大阪府', '2, 青森県', '1, 北海道', '47, 沖縄県'] L.sort()
408 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 17:29:19.42 ] >>401 import sys print '\n'.join([','.join(r) for r in sorted([s.split(',') for s in sys.stdin.read().splitlines()], key=lambda x: int(x[0]))])
409 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 17:45:20.26 ] repr(), str()って何が違うんでしょうか? str()だけあればいいと思いますが。
410 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 18:15:08.39 ] >>409 www.python.jp/doc/release/tutorial/inputoutput.html#tut-formatting str() 関数は、値を表現するときに人間にとって読みやすい形式の文字列を返します。 一方、 repr() は、インタプリタが読めるような (あるいは、等価な値を表現するための 構文がない場合には SyntaxError を送出させる) 表現にするためのものです。 人間が利用するための特別な表現をもたないオブジェクトでは、 str() は repr() と 同じ値を返します。数値や、リストや辞書などの構造体のような多くの値は、どちらの 関数でも同じ表現になります。文字列と浮動小数点は特別で、二つの別個の表現と なります。
411 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 18:57:56.35 ] >>409 かなりぶっちゃけた言い方をすると str()がユーザー向け、repr()がプログラマ向け の文字列を得るために使う
412 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 18:59:02.60 ] 理念的にはevalしたときに元通りになるのがrepr
413 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 19:41:49.36 ] >>412 おお、カッコいい
414 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 20:06:14.21 ] rep = repr(obj) ev = eval(rep) obj == ev さあ、結果や如何に!
415 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 20:08:19.37 ] >>> obj = 'abc' >>> rep = repr(obj) >>> ev = eval(rep) >>> obj == ev True >>> id(obj) 3075397632 >>> id(ev) 3075397632
416 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 20:15:41.41 ] >>> import datetime >>> obj = datetime.datetime.now() >>> rep = repr(obj) >>> ev = eval(rep) >>> obj == ev True
417 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 20:22:26.30 ] repr(float('inf')) がおかしいって誰が言ってた
418 名前:392 mailto:sage [2012/02/06(月) 06:54:34.43 ] どなたか分かる方はいらっしゃらないでしょうか?
419 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 07:21:08.82 ] c0 = tk.Canvas(...) c0.lower()
420 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 11:01:51.32 ] >>417 言ったのは多分以前の自分。 nanもダメ。
421 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 11:33:24.13 ] 理念的って書いてあるじゃない
422 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 13:56:47.83 ] 'float("inf")'を返せばいいんじゃね
423 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 14:17:54.28 ] そりゃ観念的だね
424 名前:デフォルトの名無しさん [2012/02/06(月) 14:58:32.30 ] >>419 下のようにしたのですがダメでした。 何が悪いのでしょうか? from Tkinter import * root = Tk() c0 = Canvas(root, bg = 'white') c1 = Canvas(root, bg = 'green') c0.pack() c1.pack(in_ = c0) c1.lower() root.mainloop()
425 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 15:39:43.14 ] お昼ごはんに理念のわかめスープ飲んだ >>424 from Tk import * Misc.lower(c1) Tkinter.pyのソースコードにそれっぽいことが書いてあるから 参照したらいいかも
426 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 15:40:29.24 ] あ、まちがえた。from Tkinter import *
427 名前:デフォルトの名無しさん [2012/02/06(月) 18:15:59.48 ] >>425 お陰様で無事動きました。 ありがとうございました! Tcl/Tkの経験があればTkinterも何となくわかるかと思っていたのですが、 かえって違いに戸惑ってしまってます。 そのうち慣れるでしょうけど、それまでは苦労しそうです。
428 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:32:31.34 ] 海外のアルゴリズムを教える題材にPythonを使うのが多いらしいのですがそういうサイトはあるのでしょうか C言語のアルゴリズムの本読んでるんすけど難しいです
429 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:48:52.35 ] 海外と国内のとひとつずつ greenteapress.com/thinkpython/thinkCSpy/html/ www.geocities.jp/m_hiroi/light/index.html
430 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 23:33:39.52 ] >>429 さっそくありがとうございます。 地道にやっていこうと思います。
431 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 07:24:23.27 ] MacでPythonをやるにはどういった開発環境が良いでしょうか? Ankiというソフトウェアをビルドしようとしています
432 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 07:52:26.26 ] Mac ならシステムに最初から Python がはいってるから、そのままで OK だけ ど、特定のバージョンが必要とかの場合は MacPorts から入れるのが簡単。 PyQt4 とか Beautiful Soup とかが必要のようだけど、MacPorts だとそれもま とめてインストールできる。
433 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:37:57.86 ] >>432 有難うございます 難しいですが少しずつ理解して行きたいです
434 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:54:45.89 ] 外部サイトのRSSから自動でスクレイピングして画像やテキストの一部を自分のサイトの指定の場所に表示したいんですが、どういう手順でやればよろしいのでしょうか ちなみについさっきローカルでDjangoインスコしたばかりのド素人です(^q^) はじめてのLL言語れす(*^o^*) 教えておにーちゃん!
435 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:12:10.51 ] そーいうの不愉快だから止めた方がいいよ
436 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:36:14.79 ] >>434 同じようなの作ってるけどbeautifulsoupとmechanizeでやってみてるよ
437 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:42:32.20 ] >>435 すいませんでした。反省します。 >>436 そしてありがとうございますおにーちゃん
438 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:50:57.39 ] >>> [[10]] [[10]] >>> ((10)) 10 なにこの違い 困るんですけどw
439 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:52:47.49 ] 釣り針でかすぎるけど、困る例を一つでも挙げれたら100万円やる
440 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:56:39.37 ] リストのリストから最大値&最小値を見つける関数があってですな 439のタプルのケースを食わせるとあきまへんねん
441 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:59:13.44 ] >>> ((10,),) ((10,),)
442 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:59:56.96 ] ((10,),)
443 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 21:03:53.06 ] >>440 www.python.jp/doc/release/tutorial/datastructures.html#tut-tuples
444 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 21:05:31.30 ] だよな、最初438がタプルを使おうとしてるとは思わなくて何がしたいのか理解不能だった
445 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 01:17:52.17 ] ((10,),)
446 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 15:50:27.48 ] ((((;゚Д゚))))
447 名前:デフォルトの名無しさん [2012/02/09(木) 16:58:22.47 ] 数字が1桁から2ケタへと移行する場合のsortがうまくいきません。 どうしたら直りますか #1〜2ケタの数字の場合 list=["apple2","apple10","apple11","apple1","apple4","apple5","apple6","apple3","apple15","apple7","apple8","apple12","apple13","apple9","apple14"] list.sort() print list >result >['apple1', 'apple10', 'apple11', 'apple12', 'apple13', 'apple14', 'apple15', 'apple2', 'apple3', 'apple4', 'apple5', 'apple6', 'apple7', 'apple8', 'apple9'] #1桁の数字のみの場合 list=["apple2","apple1","apple4","apple5","apple6","apple3","apple7","apple8","apple9"] list.sort() print list >result >['apple1', 'apple2', 'apple3', 'apple4', 'apple5', 'apple6', 'apple7', 'apple8', 'apple9'] #数字を全て2ケタにした場合 list=["apple02","apple10","apple11","apple01","apple04","apple05","apple06","apple03","apple15","apple07","apple08","apple12","apple13","apple09","apple14"] list.sort() print list >result >['apple01', 'apple02', 'apple03', 'apple04', 'apple05', 'apple06', 'apple07', 'apple08', 'apple09', 'apple10', 'apple11', 'apple12', 'apple13', 'apple14', 'apple15']
448 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 17:03:07.72 ] >>447 「python 自然順ソート」でググれ
449 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 17:07:27.02 ] >>447 L.sort(key=lambda x: int(x[5:])) x[5:]が手抜きっぽくて嫌なら import re L.sort(key=int(re.match(r'apple(\d+)', x).groups(1))) "apple01"を作るときに"apple%02d" % numとかでゼロパディングするのもいい
450 名前:449 mailto:sage [2012/02/09(木) 17:11:24.29 ] あれなんか二番目がおかしい。ごめん L.sort(key=lambda x: int(re.match(r'apple(\d+)', x).groups(1)))
451 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 19:16:07.76 ] apple限定かい! PHP の natsort って、おもしろいけど本当に役に立つのかねえ。 1.05 と 1.5 はバージョン番号なら同一視してほしいけど、 ふつうの小数では別に扱ってほしいし。
452 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 20:51:57.58 ] >>448 ググってみます。 >>451 apple限定じゃないほうが良いです。。
453 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 23:19:07.74 ] >>452 import re L.sort(key=int(re.match(r'[^\d]*(\d+)', x).groups(1)))
454 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 23:31:12.60 ] re.search(r'\d+\Z', ...)
455 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 01:13:25.90 ] >>454 iPhoneでみるとなんかモザイクみたいだ
456 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 12:14:21.84 ] test={ 'a':{'j':'1'}, 'b':{'i':'2'}, 'c':{'k':'3'}, } を数字の箇所の値で降順にソートしたいのです。 つまり c k 3 b i 2 a j 1 と表示されるようにしたいのですが、 どのようにすればいいのでしょうか?
457 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 13:03:48.26 ] >>456 sorted(test.items(), key=lambda item: item[1].items()[0][1], reverse=True)
458 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 13:16:58.83 ] >>457 はやっ! 。 。 / / ポーン! ( Д ) 辞書の辞書(辞書の入れ子)のsortってこうするんですね。 うまくいきました。ホントに助かりましたm(_ _)m
459 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 00:35:41.47 ] python3だと、items()はリストじゃなくてビューオブジェクトを返すから、items()[0]ができないけどね。
460 名前:デフォルトの名無しさん [2012/02/13(月) 02:10:48.93 ] IDLEは起動しないわ TkinterはDLLロードエラー出るわ 糞だな
461 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 02:41:49.89 ] >>460 これ入れたら直る www.microsoft.com/Downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=ja
462 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 03:21:26.47 ] えすぱぁ
463 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 16:26:12.19 ] Python3.2.2でvirtualenvで環境を作ろうとするとエラーになります。 Python3.2.2をインストールした後、distributeをインストール、easy_installでpipをインストール pipでvirtualenvをインストールして、エラーらしいエラーは出ないで終わりましたが、 virtualenvで環境を作ろうとするとエラーになります。 環境はwin7で、virtualenvを引数無しで実行するとヘルプメッセージが表示されるので、インストールは成功しているみたいです。 どなたか解決策をご存じの方はいらっしゃいませんでしょうか? E:\Data\Python>python -m virtualenv main New python executable in main\Scripts\python.exe Fatal Python error: Py_Initialize: unable to load the file system codec LookupError: no codec search functions registered: can't find encoding This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. ERROR: The executable main\Scripts\python.exe is not functioning ERROR: It thinks sys.prefix is 'e:\\data\\python' (should be 'e:\\data\\python\\ main') ERROR: virtualenv is not compatible with this system or executable Note: some Windows users have reported this error when they installed Python for "Only this user". The problem may be resolvable if you install Python "For all users". (See https://bugs.launchpad.net/virtualenv/+bug/352844)
464 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 16:30:40.83 ] よくこのエラーが出るけど、 「このユーザーだけ」 って選択した時なんだよね。 あなたが「全てのユーザ」を選択するとこの問題は解決するかもしれない。
465 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 16:32:25.35 ] >>464 に追加 インストール時の話です。 こっちもみてね。 https://bugs.launchpad.net/virtualenv/+bug/352844
466 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 21:22:59.58 ] 専用エディタ導入したけど使い難いな でも関数の説明が出るのは嬉しい
467 名前:デフォルトの名無しさん [2012/02/13(月) 23:27:25.06 ] >>466 何使ってますの?
468 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 00:51:14.93 ] カーソルを動かしたいのですが c言語のgotoxyに対応するような命令ってありますか?
469 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 01:44:46.17 ] >>468 curses
470 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 16:14:51.89 ] >>469 調べて見たけど結構複雑だな ubuntuで動作することを祈ろう
471 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 21:20:51.09 ] >>467 PyScripter 変数名にnとか割り当ててn = 1とかやろうとするとn<SPACE>の時に変換されてて気付いたらよく分からない文字になってたりする 今までIDE使ったことなかったから大変
472 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 23:30:20.19 ] x打つつもりが、いきなりxrangeになったりするのは、IDEオプションの Code CompletionのComplete as you typeのチェック外したら出なくなったよ。 俺も使い始めたばかりで、それが正しい対処かわからんけど。
473 名前:デフォルトの名無しさん [2012/02/14(火) 23:40:45.75 ] これでいい野田
474 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 00:39:53.16 ] 反対の産生ー
475 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 15:08:11.51 ] L = [1, 2] T = (1, 2) L == T >>> False となるのですが、一度どちらかをlist, tupleに変換しないといけないんでしょうか? それとも良い方法があったりしますか?
476 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 16:34:42.66 ] L === T
477 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 16:38:28.33 ] >>475 www.python.jp/doc/2.5/tut/node7.html#SECTION007800000000000000000
478 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 16:50:43.13 ] >>> reduce(lambda x, y: x and (y[0] == y[1]), zip([1,2,3], (1,2,3)), True) True >>> reduce(lambda x, y: x and (y[0] == y[1]), zip([1,2,3], (1,9,3)), True) False 順序気にしないなら >>> L = [1, 2] >>> T = (2, 1) >>> set(L) == set(T) True
479 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 16:54:15.43 ] >>476 死ね >>> L = [1, 2] >>> T = (1, 2) >>> L == T False >>> L === T File "<stdin>", line 1 L === T ^ SyntaxError: invalid syntax >478 そこまでするくらいなら素直に、 tuple(L), list(T)やってろって話ですかね・・・ set()はちょっと検討してみます。
480 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 18:20:22.41 ] ランバダってなんなの?
481 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:08:23.40 ] ひょっとして無名関数のことかな
482 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:20:09.50 ] λ...
483 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 20:50:26.76 ] λ人λ人λ人λ人λ人入人λ人λ人λ人入人λ人λ人λ
484 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:15:43.74 ] ランダバダバダバランダバダバダバ
485 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:21:25.72 ] λ って え と似てるな
486 名前:デフォルトの名無しさん [2012/02/15(水) 21:51:57.37 ] ええ
487 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:10:53.74 ] ソートするとき、以下のように"key=lambda"ってのが良くでてきますが、 検索しても意味がわかりません。どなたかヒントをお願いできないでしょうか。 sorted(a, key=lambda x:x[1], reverse=True)
488 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:15:59.43 ] 本当によく出てくるの?
489 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:19:04.28 ] >>487 公式のチュートリアルにちゃんと解説があるよ www.python.jp/doc/nightly/tutorial/controlflow.html#tut-lambda
490 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:20:24.17 ] >>487 wiki.python.org/moin/HowTo/Sorting
491 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:48:43.02 ] >>489 、490 ありがとうございます。なんとなくわかってきました!
492 名前:デフォルトの名無しさん [2012/02/16(木) 00:06:26.59 ] Matplotlibを使ってみたくて、fonnesbeck.github.com/ScipySuperpack/ から、 インストールしました。 動くかどうかのtestとして、 >>> import matplotlib.pyplot as plt を入力したところ No module named dateutil.rrule というエラーがでてきてしまいます。 解決方法がわかる方、教えてください。
493 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:09:01.75 ] >>492 マルチ
494 名前:デフォルトの名無しさん [2012/02/16(木) 00:11:03.46 ] >>492 マルチって何ですか?
495 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:12:13.60 ] >>494 www.ippo.ne.jp/g/70.html
496 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:13:33.76 ] 複数のスレで質問してるってこと 分からなければ googleにマルチってなんですか?って聞いてみて
497 名前:デフォルトの名無しさん [2012/02/16(木) 00:19:42.05 ] 申し訳ありません。 数週間このエラーから抜け出せずにいたので、 焦ってしまいました。 気を悪くした方、ごめんなさい。
498 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:21:44.27 ] すすすすすすすすすすす数週間!
499 名前:デフォルトの名無しさん [2012/02/16(木) 00:36:55.74 ] >>498 そうなんです。プログラミングをはじめようと思い、PythonでMatplotlibを使って グラフなど描いていろいろやろうと思ったのですが、全然うまく行かず… Google先生に聞いて、いろいろ試したのですが、うまく行かず今日に至った次第です。
500 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 04:33:51.52 ] 必要なモジュールが足りないんだろ 入れて来い
501 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 10:03:06.61 ] >>499 何だ、君マルチだったのか。 Mac使いだったらMacPortsであっさり インスコできるはずだから、一旦 Superpack消して入れ直してみなよ。
502 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:01:19.00 ] unicodeのテキストの文字列を 一行づつ画像化して出力したいのですが 文字列を画像化するにはどうしたらいいですか? PIL画像を作ったり編集したりは出来るのですが 文字を入れる方法が分かりません
503 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:21:34.23 ] ImageMagickを使うとか
504 名前:デフォルトの名無しさん [2012/02/17(金) 14:44:10.88 ] 超初歩的な質問で申し訳ないのですが、 テキストの読み込みに関してどう書いていいのかわかりません。 テキストには名前、打数、安打数、本塁打数、と1行毎に書いてありそれが9人分続いているとします。 最終的にoutputは名前、打率、本塁打数と1人1行ずつprintします。 txtの読み込みとループに関して簡単にでいいので解説お願いします。
505 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:50:06.34 ] >>503 なんか 以下のサイト見つけたけどPILのバージョンが宜しく無いみたいなんで インスコし直してきます ttp://www.geocities.jp/showa_yojyo/note/python-pil.html#id13
506 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 15:11:50.08 ] Python3.2 with open('tech504.txt') as f: for line in f.readlines(): line = line.rstrip() sp = line.split('、') out = sp[:2] + sp[3:] print('、'.join(out)) tech504.txt 名前1、打数1、安打数1、本塁打数1 名前2、打数2、安打数2、本塁打数2 名前3、打数3、安打数3、本塁打数3 名前4、打数4、安打数4、本塁打数4 名前5、打数5、安打数5、本塁打数5 名前6、打数6、安打数6、本塁打数6 名前7、打数7、安打数7、本塁打数7 名前8、打数8、安打数8、本塁打数8 名前9、打数9、安打数9、本塁打数9
507 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 15:14:26.17 ] >>506 以下の行は for line in f.readlines(): 以下の行に修正 for line in f:
508 名前:502 mailto:sage [2012/02/17(金) 16:29:13.54 ] すいません、どうも t.txtのunicodeの日本語の文字列が文字化けしてしまいます どうしたら文字化けせずに画像に出来るのでしょうか? import Image import ImageDraw import ImageFont # 大きめのキャンヴァスを用意しておく。 img = Image.new('RGB', (600, 400), 'white') dr = ImageDraw.Draw(img) # HG 明朝体を使ってみる。 fnt = ImageFont.truetype('hgrme.ttc', 24, encoding='utf-8') # 長めのテキストを用意する。 f = file("t.txt","r") text = f.read() f.close() width = 0 height = 0 for line in text.splitlines(): ext = dr.textsize(line, fnt) dr.text((100, height+(400/2)), line, font=fnt, fill='red') width = max(ext[0], width) height += ext[1] # 余白をトリムする。 #img = img.crop((0, 0, width, height)) img.save("test.png")
509 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 16:41:29.00 ] text = f.read().encode('utf-8')
510 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 16:41:29.23 ] hgrme.ttcは存在するのか?
511 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 16:43:37.54 ] 普通にunicodeでやったらうまくいったが
512 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 16:50:51.46 ] >>509 encodeじゃなくてdecodeだろ >>510 存在しないとIOErrorになる
513 名前:502 mailto:sage [2012/02/17(金) 16:57:45.39 ] >>509 駄目でしたOTL Message File Name Line Position Traceback <module> C:\Users\***\desktop\1.py 27 exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128) >>510 確認しましたがありました >>511 テキストファイルがおかしいのでしょうか? Upします。 パスはpです 出力画像 www.dotup.org/uploda/www.dotup.org2650080.png.html www.dotup.org/uploda/www.dotup.org2650085.txt.html
514 名前:502 mailto:sage [2012/02/17(金) 17:01:03.50 ] >>512 decodeにしてみたけど駄目でした Message File Name Line Position Traceback <module> C:\Users\***\desktop\1.py 27 decode C:\Python26\Lib\encodings\utf_8.py 16 exceptions.UnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 0: invalid start byte
515 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 17:02:15.39 ] 'utf-16'
516 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 17:05:48.23 ] f.read().decode('utf-16')
517 名前:502 mailto:sage [2012/02/17(金) 17:06:27.46 ] >>515 うおおおおお できましたあああ!!! 有難うございます!!!
518 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 17:14:31.91 ] ユニコード色々有り過ぎでヤだお
519 名前:504 [2012/02/17(金) 17:26:40.15 ] >>506 素早い回答ありがとうございました。 ですが求めている物とは少し違いました。 fileが以下のように各行に1つずつのときに "名前 打率: .nnn 本塁打: aa"と表示されるようにしたいのです。 tech504.txt 長野 578 164 17 マートン 579 180 13 宮本 474 143 2 説明が悪く大変申し訳ありません。
520 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 17:38:24.07 ] '\n'.join(out)
521 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:10:46.33 ] この本読んだひといますか? 感想聞かせてください WSGIウェブプログラミング ttp://www.amazon.co.jp/dp/4877832882/ 書評悪すぎてわろす
522 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:15:51.52 ] じょ、情報を小出しにするなとあれほど。。。 単に興味で聞くだけなんだけど、これなんのために必要だったの? n = 4 with open('tech504.txt.1') as f: out = [] for i, line in enumerate(f): line = line.rstrip() if i % n == 2: continue out.append(line) if i % n == n - 1: print("名前: {}, 打率: .{} 本塁打: {}". format(out[0], out[1], out[2])) out = []
523 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:22:06.70 ] せめて回答する側はインデントしようよ
524 名前:デフォルトの名無しさん [2012/02/17(金) 18:39:44.52 ] datではインデントされてるよ
525 名前:デフォルトの名無しさん [2012/02/17(金) 18:48:18.29 ] >>522 申し訳ありません。 目的は課題です。求める打者数も項目もずっと多いですが。
526 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 19:23:38.99 ] for 名前, 打数, 安打数, 本塁打数 in zip(*[iter(open('tech504.txt'))]*4): print(名前, 打数/安打数, 本塁打数)
527 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 19:39:02.38 ] どっちもひどい
528 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 05:52:36.14 ] 酔った勢いでかいてみた # -*- coding: utf-8 -*- file = "tech504.txt" person = [] pgroup = [] cnt = 0 # こんなくそデータを処理する仕様はks # 出題者よデータの変更を求む! with open(file) as f: for line in f: line = line.rstrip() if cnt <= 3: person.append(line) cnt +=1 else: pgroup.append(person[:]) del person[:] person.append(line) cnt = 1 pgroup.append(person[:]) for line in pgroup: print line[0], " 打率:", float(int(line[1]) / int(line[2])), "本塁打:", line[3]
529 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 06:09:44.37 ] # coding: utf-8 rec = [] # 名前、打数、安打数、本塁打数 f = open('2ch.txt') while 1: line = f.readline().rstrip() if not line: break rec.append(line) if len(rec) == 4: name = rec[0].decode('utf-8') ba = round(float(rec[2]) / float(rec[1]), 3) ba = str(ba)[2:5] hr = int(rec[3]) print u"名前: %s 打率: .%s 本塁打数: %s" % (name, ba, hr) rec = [] f.close()
530 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 19:03:46.86 ] 文字列の2次元リストを、x[1]を昇順に、x[2]も昇順なら以下のソースでうまくいくのですが、 x[2]のみ降順ソートする方法がわかりません。 x:(x[1],-x[2])のように-をつけるエラーが出ます。 どうすれば良いでしょうか。 #!/usr/bin/python # coding: UTF-8 l = [['D', '100', '3000'], ['B', '100', '2000'], ['A', '500', '4000'], ['C', '200', '5000'], ['C', '200', '3000'], ['C', '200', '2000'], ['E', '400', '1000']] for e in sorted(l, key=lambda x:(x[1],x[2])): print e[0], e[1], e[2]
531 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 19:19:56.27 ] -int(x[2])
532 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 19:20:59.63 ] むやみやたらにキャストすると遅くなるけどね
533 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 20:03:07.97 ] >>531 ありがとうございました。うまくいきまいした。 もうひとつだけ質問させてほしいのですが、 以下のようなリストがあって、1番目の要素を固定して、2番目の要素だけでソートする ことは出来るでしょうか。 (元のとおりにきりん、ぞう、ぱんだの順番で並べたい) ソート前 ['きりん', '300', '3000'], ['きりん', '100', '2000'], ['きりん', '500', '4000'], ['ぞう', '400', '5000'], ['ぞう', '200', '3000'], ['ぱんだ', '400', '1000'] ['ぱんだ', '200', '2000'], ソート後 ['きりん', '100', '2000'], ['きりん', '300', '3000'], ['きりん', '500', '4000'], ['ぞう', '200', '3000'], ['ぞう', '400', '5000'], ['ぱんだ', '200', '2000'], ['ぱんだ', '400', '1000']
534 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:03:04.52 ] なんか松本引越センターを思い出したw
535 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:24:54.63 ] a0 = [x[0] for x in a] a.sort(key=lambda x: x[1]) for x0, x in zip(a0, a): x[0] = x0 自分の頭をひねらない人はプログラムやめたほうがいいよ。
536 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:27:56.12 ] 安定ソートの出番ですな
537 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:29:24.87 ] >>535 これは無知からくる悪い見本
538 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:33:06.05 ] >>533 というか、なんでそんなデータ構造にした?
539 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:57:46.97 ] 以下の2次元リストで都道府県に対してindexメソッドを使うことはできますか? その場合どうすればよいでしょうか。 [1,'東京',0] [2,大阪,0] [3,神奈川,0]
540 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:03:20.24 ] >>539 たまには自分の頭で考えてみればいいんじゃないかな?
541 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:06:11.72 ] 賛成の反対の反対
542 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:19:22.88 ] >>535 すいません、マジでこれ俺には理解不能です。 もうちょっとやさしく教えてもらえると助かります。 まず1行目からつまずきました。
543 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:27:09.27 ] numpyのarray型で特定の要素だけ加算したりすることは出来ますか? a = array([[1,2],[3,4]]) a = a[1,1] + 3 で [[1,2],[3,7] みたいにしたいのですが,これを行うには行列の大きさを同じにしないと無理でしょうか?
544 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:30:19.97 ] 最低でも一冊は、Pythonの入門書読め。 金無いなら、 diveintopython3-ja.rdy.jp/index.html これ一通り読め。 次からは diveintopythonも>>1 に入れてよ。 >>950 お願い。
545 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:31:20.79 ] >>544 は>>542 宛て
546 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:32:45.85 ] a[1][1] += 3
547 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:40:45.58 ] >>544 入門書はどれがいいの?
548 名前:950 mailto:sage [2012/02/19(日) 00:57:01.58 ] >>544 了解
549 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 02:49:46.64 ] マトリックスみたいなコンソールにバババっとコードみたいなのが流れる奴って何分で作れますか?
550 名前:Python不慣れだが30分くらいで書いてみた mailto:sage [2012/02/19(日) 03:44:16.69 ] from sys import stdout from random import shuffle chrs = 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 @ . < > $ # % _ , ' for i in range(1000): ls = [c for c in chrs] shuffle(ls) for c in ls: stdout.write(c)
551 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 06:02:48.43 ] >>550 を盛大にパクってrandomやstringのヘルプ見つつ10分ほど Windowsではこれしないと動かないかも support.microsoft.com/kb/101875/ja import sys from random import randint from string import ascii_letters, digits, punctuation chars = ascii_letters + digits + punctuation chars = chars + ' ' * len(chars) size = len(chars) try: sys.stdout.write('\033[1;32m') # green while 1: sys.stdout.write(chars[randint(0, size - 1)]) finally: print '\033[0m' # reset
552 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 06:16:53.64 ] >>534 ぱんだは同業他社だなw
553 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 06:19:40.32 ] きりんにも同業他社があるしww
554 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 07:13:28.42 ] >>551 を盛大にパクってWin32APIのヘルプ見つつ10分ほど cmd.exeで動くバージョン import sys from random import randint from string import ascii_letters, digits, punctuation from ctypes import * class CONSOLE_SCREEN_BUFFER_INFO(Structure): _fields_ = [('w', c_short), ('h', c_short), ('x', c_short), ('y', c_short), ('a', c_int), ('l', c_short), ('t', c_short), ('r', c_short), ('b', c_short), ('maxw', c_short), ('maxh', c_short)] b = CONSOLE_SCREEN_BUFFER_INFO() h = windll.kernel32.GetStdHandle(-11) c = windll.kernel32.GetConsoleScreenBufferInfo(h, byref(b)) windll.kernel32.SetConsoleTextAttribute(h, 10) # green chars = ascii_letters + digits + punctuation chars += ' ' * len(chars) size = len(chars) while True: sys.stdout.write(chars[randint(0, size - 1)]) windll.kernel32.SetConsoleTextAttribute(h, b.a) # reset
555 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 07:20:01.76 ] ああ最後の二行こっちで try: while True: sys.stdout.write(chrs[random.randint(0, sz - 1)]) finally: windll.kernel32.SetConsoleTextAttribute(h, b.a)
556 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 09:26:10.77 ] できました 回答して頂いた方ありがとうございました
557 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 10:13:36.10 ] 死ね,俺死ね 下らないことで詰まってた 俺死ね
558 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 11:24:27.01 ] では私は生きよう
559 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 11:50:29.86 ] ではプロセスは子を含めて殺しておこう
560 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:43:41.44 ] 浮動小数の比較で a=1.0 b=1.0 if a <= b : みたいにするのは、やめたほうがいいですか? a=1.0 とすると実際は a=1.00000000001 みたいになってて <= の評価が うまくいかない可能性を危惧しています。とりあえず今のところ問題なさそうなんですが。 Fortranやってたときは、よくこんなふうにやってました。 eps=1e-30 a=1.0-eps b=1.0 if( a <= b) then
561 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:19:40.00 ] >>> 1/10. 0.10000000000000001 >>> 1/10. == 0.1 True >>> 1/10. > 0.1 False
562 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:36:56.87 ] >>> 0.1 0.10000000000000001 >>> 0.2 0.20000000000000001 >>> 0.3 0.29999999999999999
563 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:40:51.45 ] >>560 Pythonでも後者のようにしたほうがいいと思う 比較する値の差をとって、それが十分小さいか調べる decimalモジュールやNumPyが使えるのかもしれないけどよく知らない
564 名前:560 mailto:sage [2012/02/21(火) 00:46:19.34 ] >>561 確かにそうなりますね。 結局、気にしないでOKということでいいですか?
565 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:51:11.32 ] 気にしないのはダメ
566 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 01:18:42.28 ] 比較対象を有効桁で丸めて比較すれば?
567 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 01:25:35.45 ] >>560 Python3.2では、i, jはdouble型として扱われていて、 以下のような比較をしていたので、 比較に関する問題で、Cで起き得る問題はPythonでも起き得ると考えていいと思う。 float_richcompare() { Compare: PyFPE_START_PROTECT("richcompare", return NULL) switch (op) { case Py_EQ: r = i == j; break; case Py_NE: r = i != j; break; case Py_LE: r = i <= j; break; case Py_GE: r = i >= j; break; case Py_LT: r = i < j; break; case Py_GT: r = i > j; break; } PyFPE_END_PROTECT(r) return PyBool_FromLong(r); }
568 名前:560 mailto:sage [2012/02/21(火) 01:36:48.21 ] ありがとうございます。 やっぱり気にすることにします。
569 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 02:01:12.54 ] 実行速度より、誤差が怖いのならdecimal使った方がいいとおも。 とりあえず、1万桁ぐらいの値でも正確に判別できているみたいだから、 decimal使えば? d1 = Decimal('0.111') >>> d1._int, d1._exp ('111', -3) >>> d00 = decimal.Decimal('0.' + '0' * 10000) >>> d01 = decimal.Decimal('0.' + '0' * 9999 + '1') >>> d00 < d01 True >>> d00 > d01 False >>> d00 == d01 False >>> d88 = decimal.Decimal('0.' + '8' * 10000) >>> d89 = decimal.Decimal('0.' + '8' * 9999 + '9') >>> d89 - d88 Decimal('1E-10000') >>> d89 > d88 True >>> d89 == d88 False >>> d89 < d88 False
570 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 02:20:23.44 ] なんか、引き算すると28桁までしか精度保証してくれないみたい >>> d1 = decimal.Decimal('1') >>> d9 = decimal.Decimal('9') >>> d1.as_tuple() DecimalTuple(sign=0, digits=(1,), exponent=0) >>> d19 = d1 / d9 >>> d19 Decimal('0.1111111111111111111111111111') >>> d19.as_tuple() DecimalTuple(sign=0, digits=(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), exponent=-28) なので、こんな風にしてprecを設定しましょうって書いてあったよ。 >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')
571 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 02:56:45.20 ] >>566 正解
572 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 03:40:43.66 ] a=1.0 b=1.0 if round(a,1) <= round(b,1) :
573 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 04:16:43.30 ] >>> f = 0.0 >>> for i in xrange(100): ... f += 0.001 ... >>> f 0.10000000000000007 >>> f = 0.0 >>> for i in xrange(10): ... f += 0.01 ... >>> f 0.099999999999999992 if a <= b : これじゃだめだな
574 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 04:20:39.34 ] >>560 Fortranならうまくいくのか?バグ増産してたんじゃね? >>> f = 0.0 >>> for i in xrange(10): ... f += 0.01 ... >>> f 0.099999999999999992 >>> f - (1e-30) 0.099999999999999992 >>> f = 0.0 >>> for i in xrange(100): ... f += 0.001 ... >>> f 0.10000000000000007 >>> f - (1e-30) 0.10000000000000007
575 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 07:44:05.77 ] eps=1e-30 とかじゃなく、その言語が提供している定数使おうぜ Fortranはしらんけど、Pythonはこう、 >>> sys.float_info sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1) >>> sys.float_info.epsilon 2.220446049250313e-16 >>> a = 1.0 - sys.float_info.epsilon >>> b = 1.0 >>> a <= b True >>> a == b False
576 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 11:39:34.94 ] 比較の不等号を反転させて、その結果のnotをとればいいじゃない
577 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 14:00:29.66 ] はあ? ,,,..-‐‐‐-..,,, /::::::::::::::::::::::::ヽ _,..-‐‐-..,,, l::;;-‐‐-:;;::::::::::::ヽ//-‐,,__ /:::::::::::::::::::::ヽ l:l ヽ:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ ヽ / :::::::::::::::::::::::::::::::::::::;-'^~~^'‐;;:l ~ヽ/ ::::::::::::::::::::::::::U::ヽミ .ll / / ̄^ヽ ::::::::::::::::::::::U:::ヽ ,.ノ ∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧ / | ・ .| :/ ̄^ヽ:::::::l'^~ .< ‐/-,, ヽ,_,,ノ | ・ |:::::::l < l ~^'' `‐' ヽ.,_,,ノ :l < | ヽ / ̄ ̄\ '''l^^~~~ / ̄ ̄ヽ -‐‐‐--l- < | ヽ __ | ヽ、 ,,,, | |||!|||i||!| | ~^'‐..,,_/ < / \ |ノ ―――― / / (:::::} | | |ll ll !!.| | ,,,, イ~''' < / \ 丿 アアァァ | l: ~~ | |!! ||ll| || | {:::::) ::l .< ● l: | | ! | l ~~ l < l、 ヽ`ニニ'ノ ,l> V V V V V V V V V V V V V V V V VV V V V V /^‐-,,____,,,,,,,,..................,,,,,,,__,,,.--ヽ ~‐‐'~ ^'‐‐~
578 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 15:19:08.35 ] >>> float(numpy.finfo(numpy.float32).tiny) 1.1754943508222875e-038 >>> float(numpy.finfo(numpy.float64).tiny) 2.2250738585072014e-308 >>> float(numpy.finfo(numpy.double).tiny) 2.2250738585072014e-308
579 名前:デフォルトの名無しさん [2012/02/22(水) 01:27:16.78 ] これで machine epsilon は求まりますか? f = 1.0 while f != f / 2.0: f /= 2.0 print f
580 名前:デフォルトの名無しさん [2012/02/22(水) 01:28:35.01 ] 訂正 f = 1.0 while f != f / 2.0: f /= 2.0 print f
581 名前:デフォルトの名無しさん [2012/02/22(水) 05:13:48.78 ] 正規表現である文字を大文字にするとき、どう書けばいいんでしょうか 文字列'foobar'の'o'を'O'に変換 ※perl my $s = 'foobar'; $s =~ s/(o)/\u$1/g; print $s; #=>'fOObar' ※python s = 'foobar' × s = re.sub(r'(o)', r'\u\1', s) × s = re.sub(r'(o)', '\\1'.upper(), s)
582 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 05:30:31.59 ] re.sub('o', lambda m: m.group().upper(), s)
583 名前:581 [2012/02/22(水) 05:58:51.72 ] >>582 マッチオブジェクトを受け取る関数をsubの第2引数にできるんですね。 マニュアルを見るとsubの第2引数は文字列または関数となっていますが、実感してませんでした。 メタシンボルの\uは無理としても、式の戻り値が入らないのが不思議でならず、そこで止まってしまってたんですが やっとクリアになりました。ありがとうございます!
584 名前:デフォルトの名無しさん [2012/02/22(水) 08:59:17.97 ] BeautifulSoup 4.0Betaを、Python3.1にインストールしようとして、tar.gzを展開した後 $sudo python3.1 setup.py install を実行すると次のエラーで失敗します ------------- (略) running install_lib byte-compiling /usr/local/lib/python3.1/dist-packages/bs4/doc/source/conf.py to conf.pyc File "/usr/local/lib/python3.1/dist-packages/bs4/doc/source/conf.py", line 43 project = u'Beautiful Soup' ^ SyntaxError: invalid syntax ------------- なにか対策はあるでしょうか? pythonはDebian Squeeze標準のpython3.1です
585 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 09:13:54.32 ] 2to3
586 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 09:38:35.52 ] >>585 tar.gzを展開した場所で $ find ./ -name *.py -exec 2to3 -w {} \; のあと $ sudo python3.1 setup.py install を実行したら問題なくインストールできました! このツールをすぐ使おうとしてpythonを始めたもので…… ありがとうございました
587 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 09:56:49.02 ] 2.7も入れて使い分けたらいいんじゃねーの
588 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 06:50:22.36 ] Udacityに参加してる人いる? 俺はプログラミング自体初心者に近いからCS101に挑戦中でふ。
589 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 11:40:58.23 ] コマンド呼び出しと関数呼び出しの両方ができるスクリプトはできないのでしょうか? test_disp.pyは引数を表示する機能があります。 import sys def main(argv='default'): import sys if len(sys.argv) == 2: argv = sys.argv[1] print 'called by command ', argv else: print 'called by module ', argv if __name__ == '__main__': main() これを下記のtest_caller.pyから呼び出して、 import test_disp test_disp.main('./test_disp.py') called by module test_disp.py と表示させたいのですが、'argv' is not definedとなります。 どうすればいいのでしょうか?
590 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 13:03:25.37 ] 馬鹿には無理
591 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 13:31:22.87 ] 普通にデバッグしてね
592 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 14:06:23.08 ] import sys def main(argv='default'): if __name__ == '__main__': # ''' # if len(sys.argv) == 2: # ''' argv = sys.argv print('called by command', argv) else: print('called by module', argv) # if __name__ == '__main__': # print('__main__') main()
593 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 14:38:05.56 ] >>589 インデントがおかしい def main(): if len(sys.argv) > 1: print ... else: print ... if __name__ == '__main__': main() とかしなきゃだめ
594 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 15:47:05.07 ] >>593 ,592 ありがとうございました。うまくいきました。 インデントエラーが出てないので、てっきり意図通りになっていると 勘違いしてました。 それにしてもここは、本当にまともな掲示板ですね。 私がよく訪れる仕事関係の板は、ソマリアみたいなところなんで、 びっくりしました。 この板とpythonと回答者に幸あれ。
595 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 15:54:11.13 ] >>594 うっさい市ね!
596 名前:デフォルトの名無しさん [2012/02/23(木) 16:52:12.56 ] ここまで全部自演
597 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 16:57:16.12 ] むかしはアンチスレが一番まともだったんだが いまはここなのか
598 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 17:26:49.11 ] なんか殺伐として来たな。
599 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 20:27:11.59 ] 対象をよく知ってるアンチほど怖いものはない
600 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 21:27:42.66 ] ソマリアの比喩がなんなのか分からん 悪い意味で言ってるんだろうなーくらいは検討つくけど
601 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 23:06:39.95 ] >>600 ソマリアつったら海賊問題だろ 海賊仕事関係の板 つまり594は海賊
602 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 23:47:59.69 ] 糞詰まらんし
603 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 23:52:14.18 ] ストッパおすすめ
604 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 16:14:26.19 ] 糞が詰まった
605 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 10:31:02.95 ] すみません。 質問させてください。 あるメソッドのテストを行っています。 そのメソッドは引数として整数を一個取り、その整数の範囲は1~100とします。 そのため、テストとして0や101を入れると例外が返ってくることを期待するテストを作ることを考えています。 しかし、そのときふと思ったのですが、引数の型が整数に限定されている場合、引数の型チェックも行うべきなのでしょうか? 今までJava、C#しか経験していないため、変数に型が無い言語でどのようにすべきなのか良くわかりません。 初心者丸出しの質問かもしれませんが、よろしくお願いいたします。
606 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 10:36:27.55 ] >>605 isinstanceを使うんだが、テストについてはこのリンクが極めておすすめ Python3だけど 第9章. ユニットテスト diveintopython3-ja.rdy.jp/unit-testing.html
607 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 13:08:47.13 ] その程度だったら、 assert isinstance(a, int) and 1 <= a <= 100 って一番最初に書いといて、以降はその仕様は忘失の彼方だな・・・
608 名前:デフォルトの名無しさん [2012/02/25(土) 13:17:07.38 ] >>606 情報ありがとうございます。 リンク先を読ませていただきましたが、一般的なTDDの説明かと思いました。 いまいち、変数に型がないことによるメリットがわかりませんでした。 その辺をわかりやすく解説してあるサイトなどありましたら、教えていただけると助かります。 よろしくお願いいたします。
609 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 13:27:16.06 ] 30 30 28カ所 約28カ所 約28箇所 不明 のような文字が1行づつに入力されたテキストファイルがあるのですが、 これから数字のみを抜き出したいと考えているのですが、どのようにすればよいでしょうか? 数字だけであれば全角文字をifで半角数値に置換すればいいかと思うのですが、 それ以外の文字を削除する方法が思いつきません。
610 名前:609 mailto:sage [2012/02/25(土) 13:28:55.66 ] すみません 書き漏れがありました 40箇所か39カ所 のような2つ数字が現れる文字もあるかもしれません。 その場合は最初に出てきた数次だけ抜き出したいです
611 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 14:04:53.49 ] 正規表現を使って最初に出てきた数字だけをリストに放り込んでいくのはダメなん?
612 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 18:05:45.24 ] import re with open('tech509.txt') as f: for l in f: l = l.rstrip() print('l =', l) # num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?|不明)+', l) # or num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?|不明)', l) if num_str: print('num_str =', num_str.group()) print() tech509.txt aaaaa30お前のカーチャンでーべそw あいうえお30お前のカーチャンでーべそw かきくけこ28カ所お前のカーチャンでーべそw mmmmmm約28カ所お前のカーチャンでーべそw fed@@@@約28箇所お前のカーチャンでーべそw mふぃfじゃいえいえいふぉえ不明お前のカーチャンでーべそw ffieie40箇所か39カ所お前のカーチャンでーべそw
613 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 18:06:37.24 ] 609でしたーざんねーん 無念、無念の誤読〜
614 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 18:14:07.22 ] ちゃんと仕様を確認していませんでした。 はいはい、どうもすいませんっした。 import re with open('tech609.txt') as f: for l in f: l = l.rstrip() print('l =', l) # num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?|不明)+', l) # or num_str = re.findall(r'((約|か)?([0-90-9]+)(箇所|カ所)?|不明)', l) if num_str: print('num_str[2] =', num_str[0][2]) # print('num_str =', num_str) print()
615 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 18:20:54.26 ] はいはい、これで完璧っすかね 何回もやり直してすいませんっした import re with open('tech609.txt') as f: for l in f: l = l.rstrip() print('l =', l) # num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?|不明)+', l) # or num_str = re.search(r'(約|か)?([0-90-9]+)(箇所|カ所)?|不明', l) if num_str.groups()[1]: print('num_str.groups()[1] =', num_str.groups()[1]) # print('num_str =', num_str) print()
616 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 18:31:23.89 ] なんで最初の一個だけでいいの? 別に言わなくてもいいんだけどさ。 私の感覚的にはnumsが正解なんだけど。 import re with open('tech609.txt') as f: for l in f: l = l.rstrip() print('l =', l) num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?)|不明', l) # or if num_str.groups()[1] or 1: print('num_str.groups()[1] =', num_str.groups()) # print('num_str =', num_str) num_str = re.findall(r'(約|か)?([0-90-9]+)(箇所|カ所)?|不明', l) if num_str: print('num_str =', num_str) nums = [tup[1] for tup in num_str] print('nums =', nums) print()
617 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 18:38:10.70 ] ここだけ nums = [tup[1] for tup in num_str if tup[1]] ↑に修正だわ
618 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 19:36:47.47 ] 「数字だけを抜き出す」のが要望としか読めないんだけど、他の文字をマッチングさせてるのはなぜだろう
619 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 19:41:57.51 ] 〜カ所という形式でなく、 一、関係ない場所で20日、98度などといった形式での数値があると予想できる 二、仕様変更に対する耐性をつけておくため 三、自分でも必要とする時があるかもしれないので自分の感覚通りのものを拵えておいた
620 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 20:07:07.43 ] #Python 2.7 import re, codecs r = re.compile(u'[01234567890123456789]+') f = codecs.open('test.txt', 'r', 'utf-8') l = f.readlines() f.close() n = [re.search(r, s).group(0) if re.search(r, s) else '' for s in l] for s in n: print s
621 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 20:22:35.78 ] そういえば、スタックとヒープを可視化しながらPythonコードを1行ずつ実行してくれる、初心者向け素敵Web実行環境は既出ですか? ttp://people.csail.mit.edu/pgbovine/python/tutor.html#mode=edit
622 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 20:42:50.00 ] pdb使ったらいいんちゃうん? あと、>>621 のいうスタックは、localsのことだろうと思う。
623 名前:デフォルトの名無しさん [2012/02/25(土) 21:36:24.88 ] pythonでクラス作っていますが、インスタンス変数、クラス変数へのアクセス制御(private,publicなど)はどうすればいいのですか?
624 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 22:16:26.99 ] property _underscore_name
625 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 23:02:08.02 ] >>624 ありがとうございます。 命名規則で対処できたんですね
626 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 01:12:10.81 ] そういうお約束にしましょうよって話。 まあ、これくらいは読んでおいてね。 Python のコーディングガイド PEP8 - 日本語訳 www.oldriver.org/python/pep-0008j.html メソッド名とインスタンス変数 関数の場合と同じルールを使う。lowercase 方式で命名し、可読性を上げ るためにアンダースコアで単語を区切る。 非公開なメソッドとインスタンス変数にのみ、先頭にアンダースコアを1 つ使って命名する。 ....省略されました。続きを読むにはワッフルワッフルと入力して下さい。 継承のための設計 クラスのメソッドやインスタンス変数(つまり「属性」)を公開すること の是非を、常に考慮する。どちらがいいか分からないときには、非公開に する。公開属性を非公開にするよりも、非公開属性を公開にするほうが容 易である。 公開属性にするということは、あなたのクラスを他人が使うことを想定し、 将来の非互換性を避けることを約束したということだ。非公開属性にする ということは、他人が使うことを想定しておらず、変更したり削除したり するかも知れないということだ。 ....省略されました。続きを読むにはワッフルワッフルと入力して下さい。 あと、最低でもこれ一通り読め。 diveintopython3-ja.rdy.jp/index.html
627 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 01:57:11.94 ] >>622 グローバルなのも表示されとるよ。 デバッガ使えば似たようなことできるのは知ってるが、 初心者でも手軽に使えそうだし、特にmutable, immutable関連での頻出の質問に対する かなり明確な答えになると思われるし、初心者向きスレには需要あるかと思って貼ってみた。
628 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 03:21:30.42 ] >>623 アクセス制御なんてない
629 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 09:58:23.94 ] >>626 了解。 まずは、勉強させてもらいます。 >>628 pythonにカプセル化とかの概念はないのですか?
630 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 10:02:01.50 ] 概念はあるでしょ。 言語仕様で縛るか、お約束でやるかの違い。
631 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 13:10:45.72 ] 透明どころか手を中に突っ込めるカプセル
632 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 13:55:27.36 ] こういうシンプルな書き方ってできないのですか? for x in a_list if a_condition(x): do_something(x) こう書けるのはわかりますが、filter とか lambda とか面倒で気に入らない for x in filter(lambda x: a_condition(x), a_list): do_something(x) こう書けるのもわかりますが、無駄に冗長でウンコ臭い for x in [x for x in a_list if a_condition(x)]: do_something(x)
633 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:03:43.20 ] for x in a_list: if a_condition(x): do_something(x)
634 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:06:25.76 ] def is_odd(n): return n % 2 a_list = [i for i in range(10)] for x in filter(is_odd, a_list): print(x, 'is odd.')
635 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:14:31.83 ] >>633-634 やっぱりそういう書き方しかないですか? >>633 それ do_something(x) が複数の文になるとインデント2段になりますよね >>634 a_condition(x) をいちいち関数定義するのは面倒ですね
636 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:30:07.95 ] >>632 の一番上は分かりにくくないかい? continue使えば?ってなりそうな気がした。 def is_odd(n): return n % 2 a_list = [i for i in range(10)] for x in a_list: if not is_odd(x): continue print(x, 'is odd.')
637 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:35:54.48 ] >>636 うーん。もし書けるなら、これの方が for x in a_list if is_odd(x): print(x, 'is odd.') これより簡潔で分かりやすいと思うんだけど for x in a_list: if not is_odd(x): continue print(x, 'is odd.')
638 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 15:12:04.71 ] そうかもなあって思っちゃってる。 continueがない分いいってか。 うーん、、、 for x in a_list if is_odd(x): for x in filter(is_odd, a_list): 上2つは等価なfor文だけど、 修正が大変とかで上の文法は採用されなかったんだろか。 上の方を満たすためにfilter()用意したんじゃないかな? って思ってる。 ここは我慢してPythonに合わせるしかないんじゃないの? 話を元に戻して、 > こういうシンプルな書き方ってできないのですか? > for x in a_list if a_condition(x): > do_something(x) ↓って言われちゃう。できないっぽいねぇ for x in a_list if is_odd(x): ^ SyntaxError: invalid syntax
639 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 15:21:18.40 ] >>638 >修正が大変とかで上の文法は採用されなかったんだろか。 SyntaxError: invalid syntax ってなることからわかるように、 文法を変えないといけないからでしょ。 特定の場合に便利だからといって、どんどん文法を増やすと それ以外の場合に却って使いにくくなったりするからねぇ。
640 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 15:51:17.81 ] 書ける for x in a_list: if is_odd(x): print x 書ける for x in a_list: if is_odd(x): print x 書けない for x in a_list: if is_odd(x): print x
641 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 17:15:20.82 ] もうpythonじゃなくていいんじゃないの? 自分の好きな書き方が出来る言語を探せばいい 無ければ作ろう
642 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 17:55:55.38 ] お断りします お断りします お断りします ハ,,ハ ハ,,ハ ハ,,ハ ハ,,ハ ( ゚ω゚ )゚ω゚ )゚ω゚ )゚ω゚ ) お断りします / \ \ \ \ お断りします ((⊂ ) ノ\つノ\つノ\つノ\つ)) お断りします (_⌒ヽ ⌒ヽ ⌒ヽ ⌒ヽ お断りします ヽ ヘ } ヘ } ヘ } ヘ } ε≡Ξ ノノ `Jノ `J ノ `J ノ `J
643 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 18:46:27.49 ] なくなるなら宝石が先
644 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 19:03:06.98 ] >>643 いや 641は632に対してね
645 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 22:15:44.71 ] いろいろ考えたけど 内包表記やラムダなどを駆使して関数的に美しく書くなんてのは Python では目指さない方が良さそうだというところに落ち着いた やって出来ない事はないけど、やっぱり関数型言語ではないので 関数的なスタイルで読みやすいコードを書くのは難しい。 凝ったことはせずに 素直に手続き的に書いて関数も一つ一つ def する というのが Python のコツっぽいかな?
646 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 22:39:15.16 ] >>626 リンクのdive into python3はまとまっていてわかりやすそうかと思いました python3を対象としていますが、今からpython勉強する場合は3がいいでしょうか? なんか、ネット徘徊していると、2を勉強すべしとの意見も多いので困っています よろしくお願いいたします
647 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 22:57:21.03 ] どっちかで迷うくらいなら、3系がいいと思うよ。 私は3系のみ勉強している。 2系を折角勉強したのに、3系では邪魔知識になるとか嫌でしょ。 既存のPythonの資産を使いたいとかなら、 2系の勉強も考えた方がいいかも知れないけど、 そうじゃないなら3系からの勉強でいいと思う。 >>646 が、Pythonをなぜ使いたいのかが一番大きい。
648 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 06:28:08.91 ] Python3の現時点のデメリットは対応ライブラリが少ないくらいで至急何か作る必要がなければ困らないと思うよ Python2は文字コードべったりなんでunicodeの暗黙の変換とかかなり分かりにくい
649 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 08:06:32.98 ] 勉強するだけなら Python 3 でも構わないかもね。 現実に使うのは厳しいが。
650 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 08:12:40.46 ] どうしても、本人がどうしたいかになるんだよね。
651 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 11:53:03.88 ] u"3だと日本語書くためにいちいちuつけなくていいから楽"
652 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 12:08:34.16 ] 全角だし
653 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 19:57:44.25 ] つ[from __future__ import unicode_literals]
654 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 22:12:03.40 ] >>649 目的が勉強だけって… それはプログラミングやる意味ないんじゃ…
655 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:00:49.73 ] 勉強の意味が 数学や英語の学業としての勉強じゃなくて、 学んでいるという意味の勉強じゃないのかな?
656 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:04:47.16 ] プログラム言語なんてその言語特有のお約束を覚えればいいだけじゃん 制御構文や変数はどの言語だって共通してるし つまり
657 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:06:42.91 ] >>647 単純に、Linuxのソフトウェア調べる仕事していて、pythonのコードに出くわすことが多かったからです 今現在のLinuxで動いているpythonとすると2系が多いですかね 個人的には3が勉強したいですけど
658 名前:デフォルトの名無しさん [2012/02/27(月) 23:24:21.45 ] Python製のフレームワークって今何がHOTなの?
659 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:28:07.90 ] >>657 両方勉強するのはだめなの?
660 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:41:16.90 ] ライブラリの多さがpythonの利点なんだし Python3なんて選択肢に入らない
661 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:47:18.01 ] 最初はどっちかに絞った方がいいと思ます。 二兎追うものは一兎も得ず っていうじゃないですか。 どちらも理解できれば一番いいけど、そう上手くいくかな? > Linuxのソフトウェア調べる仕事していて、pythonのコードに出くわすことが多かったからです 今度は、どんな目的で調べているかによる。なんつって。 範囲が広いんだよねー。 中身を読んでるってことですよね。 ふむ。 改良や開発目的で調べてるの? そのソフトウェアの開発者達が、 後継の開発を2で行うって言ってるんなら、2の勉強だろうし、 3で行うってのが多勢なら3だろうし。
662 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 00:07:28.87 ] smtplibについて質問させてください。 会社のメールサーバーに対して > telnet XXX.XXX.XXX.XXX 25 を実行するとうまくつながるのですが、 以下のように実行するとエラーが発生します。 原因が何かヒントをいただけないでしょうか。 import smtplib s = smtplib.SMTP('XXX.XXX.XXX.XXX', 25) c:\test\python Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win 32 Type "help", "copyright", "credits" or "license" for more information. >>> import smtplib >>> s = smtplib.SMTP('XXX.XXX.XXX.XXX', 25) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\python27\lib\smtplib.py", line 242, in __init__ (code, msg) = self.connect(host, port) File "c:\python27\lib\smtplib.py", line 302, in connect self.sock = self._get_socket(host, port, self.timeout) File "c:\python27\lib\smtplib.py", line 277, in _get_socket return socket.create_connection((port, host), timeout) File "c:\python27\lib\socket.py", line 571, in create_connection raise err socket.error: [Errno 10061] 対象のコンピュータによって拒否されたため、接続できま せんでした。 >>>
663 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 00:09:29.04 ] >>661 中身は読んでいますけど、ほとんど趣味ですね 会社から要求されているのは単純な使い方と性能のみ でも、個人的に興味持って色々と調べています ま、趣味なんで、3勉強してみます
664 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 00:28:07.37 ] こちらからもちょっと質問させて下さい。 > telnet >>> import smtplib って同一PCかつ同一OSでの実行結果? それぞれの環境でpingがとおることは確認済? まあ、これが答えのような気もするけど。 socket.error: [Errno 10061] 対象のコンピュータによって拒 否されたため、接続できませんでした。
665 名前:デフォルトの名無しさん [2012/02/28(火) 01:20:53.58 ] scipyとmatplotlibが移植されたんで、自分的には3でも結構逝ける。
666 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 01:46:09.75 ] 俺はいつも逝ってる むしろ吊ってるし詰んでる
667 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 05:58:14.65 ] >605 >今までJava、C#しか経験していないため、変数に型が無い言語でどのようにすべきなのか良くわかりません。 >608 >いまいち、変数に型がないことによるメリットがわかりませんでした。 型はある 型宣言が無いだけ
668 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 06:05:53.88 ] >632 for x in filter(a_condition, a_list): do_something(x)
669 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 06:14:14.91 ] ワッフル ワッフル
670 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 06:31:08.22 ] >>662 telnetでサーバからのリプライは確認した? 220 <ホスト名> ESMTP Sendmail ... とか返ってくるはずだけど
671 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 06:43:35.75 ] >>670 はい、返ってきました。 これがうまくいっているので、どうしてエラーが起こるのかわからないんです…
672 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 07:13:17.56 ] >>671 となるとちょっとわからない。ごめん wiresharkでも使ってtelnetとsmtplibの通信内容を比べてみては
673 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 07:17:43.69 ] wiresharkじゃなくてdebug設定では
674 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 07:30:31.34 ] -v -vvv
675 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 07:37:01.98 ] >>667 メリット教えてやれよ
676 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 09:38:41.68 ] >>675 ダックタイピングができる
677 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 16:14:31.80 ] >>667 値に型があるんであって、変数に型はないでしょ
678 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 16:31:13.65 ] 変数はオブジェクト型またはプリミティブ型もしくはNoneです
679 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 17:53:02.28 ] Pythonにはプリミティブ型なんて無い。 Noneもただのオブジェクト。
680 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 18:15:00.11 ] pythonにはオブジェクトしかない お前もオブジェクトにしてやろうか
681 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 21:05:46.33 ] ひぃいぃ
682 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 21:27:45.80 ] ジェクジェクにしてやろう
683 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 21:29:29.76 ] 壊れてすっかり職場のオブジェ
684 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 23:04:10.42 ] >>671 [Errno 10061] は、WSAECONNREFUSED のことだろうから、 接続先のサーバーで smtp サーバーが動作していない (正確には、 該当のポートをリッスンしている奴がいない) ことを示している。 本当に、telnet と同じサーバーに繋ぎにいこうとしてる? もしくは、s = smtplib.SMTP('XXX.XXX.XXX.XXX', 025) なんてしてないよね?
685 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 23:16:28.49 ] >>684 > もしくは、s = smtplib.SMTP('XXX.XXX.XXX.XXX', 025) なんてしてないよね? これはどうしてダメなんですか? 025のゼロがダメなんでしょうか。すいません。
686 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 23:57:53.76 ] >>685 8進数だから
687 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 00:25:20.84 ] >>> s = smtplib.SMTP('XXX.XXX.XXX.XXX', 25) Traceback (most recent call last): ... から見るにそんなことはしていなそうでしたが。 同一PCかつ同一OSでの実行結果? それぞれの環境でpingがとおることは確認済? とりあえず、pingは通りましたが送信できずに困ってますとかって言って欲しい。
688 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 03:55:30.51 ] 良心的に見て >>> s = smtplib.SMTP('192.168.080.025', 25) とかがアウトっていう意味か ping が通ったからと言って telnet (IP) 25 が通る保障はどこにもない
689 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 03:58:36.06 ] そしてpingが通らなくてもSMTP接続出来ることなんていくらでもある
690 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 05:48:42.36 ] そして>662を読めといいたい
691 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 07:00:15.35 ] こういう話だったらいいなあ ja.wikipedia.org/wiki/Outbound_Port_25_Blocking 以下smtplib.SMTPでもdebuglevelが使えるようなので 今回の件には役に立ちそうにないけど一応 import smtplib smtplib.SMTP.debuglevel = 1 con = smtplib.SMTP(hostname, 25) ... debug情報がずらずら ...
692 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 14:21:38.30 ] クライアントの PC は同じ環境からアクセスしてんのかな あと telnet するときの IP と smtplib.SMTP するときの IP ( XXX.XXX.XXX.XXX の部分 ) は本当に同じなのかな
693 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 22:21:00.17 ] pythonでインスタンスのアドレスを知る方法ってないんでしょうか? ずっと勘違いしてて id でアドレス表示してるのかと思ったら 全然そんなことないですよね id の仕様を見ても「識別子」としか明言してなくてアドレスだとは一言も言ってないし
694 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 22:38:44.02 ] help(id)
695 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 23:35:05.47 ] あってるよ Python/bltinmodule.c [926/2392行][38%] static PyObject * builtin_id(PyObject *self, PyObject *v) { return PyLong_FromVoidPtr(v); } PyDoc_STRVAR(id_doc, "id(object) -> integer\n\ \n\ Return the identity of an object. This is guaranteed to be unique among\n\ simultaneously existing objects. (Hint: it's the object's memory address.)");
696 名前:デフォルトの名無しさん [2012/03/01(木) 15:22:17.92 ] あってるね
697 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:48:39.27 ] (1) (2) (3) を同じPC(Windows XP)で実行しました。 スクリプトからの接続を拒否する仕組みってあるのでしょうか? ----------------------------------------------- (1) pingを実行した場合、以下のように成功します。 c:\test>ping 100.100.100.100 Pinging 100.100.100.100 with 32 bytes of data: Reply from 100.100.100.100: bytes=32 time<1ms TTL=63 Reply from 100.100.100.100: bytes=32 time<1ms TTL=63 Reply from 100.100.100.100: bytes=32 time<1ms TTL=63 Reply from 100.100.100.100: bytes=32 time<1ms TTL=63 Ping statistics for 100.100.100.100: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
698 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:49:08.93 ] ----------------------------------------------- (2) telnet を実行した場合、以下のように成功します。 c:\test>telnet 100.100.100.100 25 220 xxx.xxx.co.jp ESMTP Postfix
699 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:50:13.53 ] ----------------------------------------------- (3) pythonを以下のように実行するとエラーが出ます。 c:\test>python Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win 32 Type "help", "copyright", "credits" or "license" for more information. >>> import smtplib >>> smtplib.SMTP.debuglevel=1 >>> con = smtplib.SMTP('100.100.100.100', 25) connect: ('100.100.100.100', 25) connect: (25, '100.100.100.100') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\python27\lib\smtplib.py", line 242, in __init__ (code, msg) = self.connect(host, port) File "c:\python27\lib\smtplib.py", line 302, in connect self.sock = self._get_socket(host, port, self.timeout) File "c:\python27\lib\smtplib.py", line 277, in _get_socket return socket.create_connection((port, host), timeout) File "c:\python27\lib\socket.py", line 571, in create_connection raise err socket.error: [Errno 10061] 対象のコンピュータによって拒否されたため、接続できま せんでした。 >>>
700 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 23:52:26.58 ] 単にファイアウォールにひっかかってるだけじゃないの?
701 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 23:54:28.83 ] >>698 この先に進もうとしようとすると同じように失敗しない? telnetでどうやってメール送れたの? 受信確認はどうやったの?
702 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:42:02.63 ] >>700 例えばノートンなんかに (telnet.exeの通信は止められていないけど) python.exeの通信が止められてる可能性があるってことか
703 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 02:22:05.12 ] ファイアウォールというかセキュリティソフトのチェックかもな telnet.exe は既に許可ソフトに登録済みなのを自分で忘れてるだけだろ
704 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 19:39:38.90 ] かもとだろって、両立するの?
705 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 19:54:24.88 ] 自然言語では両立するでしょ。
706 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 20:24:24.48 ] 嘉本さんのこと言うなー
707 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 20:31:16.20 ] (馬)鹿本だろう
708 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 20:36:14.76 ] ぶるるるぁ
709 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 20:51:13.63 ] webページをダウンロードして内容をファイルに書くところで詰まってるんだけど、 Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> open('D:\P/output.txt', 'w').write(mainline) TypeError: expected a character buffer object と出るんだけどどうしたらいいの書き込もうとする文字列が一定以上の量だとエラー出る感じだけど
710 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 21:21:04.13 ] type(mainline) 確認してみたら? 文字数が変わると内部でmainlineのtype変えてるんじゃないの?
711 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 21:40:50.14 ] import StringIO open('D:\P/output.txt', 'w').write(StringIO.StringIO(mainline).getvalue())
712 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 23:37:00.57 ] >>699 >connect: ('100.100.100.100', 25) >connect: (25, '100.100.100.100') なんで二行でるんだ? とりあえず、con = smtplib.SMTP('100.100.100.100') で試してみて。 >>700 多分、それはない。 もし、そうなら、10060 (WSAETIMEOUT) になるはず。
713 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:34:59.65 ] >>701 今日試しました。 telnetでメールが送信できました。 以下のサイトを参考にました。 www.nurs.or.jp/~telnet/smtp.html 受信はメールソフトを使いました。 なんでだめなのか、さっぱりわかりません。
714 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:38:30.40 ] >>712 何度かためしましたが、確かに二行が表示されます。 > とりあえず、con = smtplib.SMTP('100.100.100.100') で試してみて。 やりましたが、結果は全く同じです。 ひとつわかったことがあります。 IPアドレスを100.100.100.100じゃなくて、でたらめな値に変えても全く同じエラーが発生します。 telnetを使って100.100.100.100 でメール送信できたので、ipアドレスが間違っていることはありません。 smtplib のソースにデバッグコードを埋め込んでどこまでうまく動いているか、切り分けするしかないんでしょうか。
715 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:44:54.17 ] ファイアウォールというかセキュリティソフトのチェック telnet.exe は既に許可ソフトに登録済みなのを自分で忘れてるだけ
716 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:54:29.66 ] 多分PCから出れてないわ みんながいうようにファイア・ウォールが原因だと思うぞなもし 一度ファイア・ウォール、セキュリティ関係諸々を停止させてから試してみなよ そしたら上手くいくと思う
717 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:57:53.99 ] localhost, 127.0.0.1だったらうまくいくんだっけか?
718 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:58:29.82 ] 職業別の人気順位 (an・an調べ) xbrand.yahoo.co.jp/category/lifestyle/7380/1.html 1位 システムエンジニア 2位 公務員 3位 銀行&商社マン 4位 警察・消防・自衛官 5位 マスコミ・営業マン・広告マン 6位 企業経営者 7位 医師 8位 弁護士、公認会計士
719 名前:デフォルトの名無しさん [2012/03/03(土) 00:59:02.50 ] 馬鹿には無理