1 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 19:09:55 ] Pythonオフィシャルサイト www.python.org/ 日本Pythonユーザ会 www.python.jp/Zope/ まとめWiki python.rdy.jp/ 関連スレ find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python 前スレ pc11.2ch.net/test/read.cgi/tech/1223543412/
896 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:20:59 ] 僕も全然始めたばっかりの初心者だけど 3.0でUnicodeが云々で日本語の扱いがより簡単になった (2系程複雑じゃない?)から3.0から始めたいなぁ、とか思ったよ。
897 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:29:39 ] 今でもUnicodeEncode(Decode)Errorを見るとため息が出る。
898 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:37:04 ] UnicodeEncode(Decode)Error 慣れれば原因想像つくんだけど 途方に暮れてる人も多いんじゃないかな
899 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:42:28 ] 初心者にもいろいろいるだろう Perlから来た人 COBOLから来た人 FORTRANから来た人 とかの「他言語の経験のあるPython初心者」とか Linux?何それおいしいの?な「Linux初心者&Python初心者」とか プログラミング言語?何それおいしいの?っていうかWindowsって何?とか
900 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 18:38:37 ] >>896 >3.0でUnicodeが云々で日本語の扱いがより簡単になった より簡単になった? ご冗談はよしてください。
901 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 20:08:41 ] バイト列とユニコード文字列が別にあって でも両方にほぼ同じメソッドがあって(encode, decodeまで) でも中身は別物なので使い分けないといけない という状況が解消されたんだから 「より簡単になった」と言っていいと思うよ
902 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 20:47:36 ] 「マシになった」と言うべき
903 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 20:59:33 ] より良くなったと見るかより糞でなくなったかと見るか
904 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:08:13 ] 文字列から正規表現にマッチする部分をすべて探して表示するにはどうすればよいでしょうか? log: 文字列 regex: コンパイル済み正規表現 のとき res = regex.search(log) print res.group() としたところ、最初にマッチしたもののみが返されるというところまではたどり着きました。
905 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:12:12 ] ttp://www.python.jp/pipermail/python-ml-jp/2008-December/004566.html いやー、簡単になって本当〜〜〜に良かったよね!!
906 名前:デフォルトの名無しさん [2008/12/30(火) 21:13:59 ] UnicodeEncodeError: 'cp932' codec can't encode character u'\xbb' in position 2091: illegal multibyte sequence こんなエラーが出るんですけど原因はなんでしょう?
907 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:27:21 ] >>904 6.2. match() vs search() match() 関数は、正規表現が先頭でマッチするかを調べるだけで、 search() は文字列の先へ進みながら、マッチする部分を探します。 この違いを覚えておくことは重要です。 match() は位置 0 でマッチした場合のみ報告してくれます。 もしマッチが位置 0 以外ならmatch() は報告しません。 >>> print re.match('super', 'superstition').span() (0, 5) >>> print re.match('super', 'insuperable') None 反対に、search() は文字列を先へと探していき、最初に見付けたマッチを返します。 >>> print re.search('super', 'superstition').span() (0, 5) >>> print re.search('super', 'insuperable').span() (2, 7) ときどき、あなたは re.match() のみを使って、 正規表現の前に .* を付けておくという誘惑にかられるかも知れません。 この誘惑に打ち勝って、re.search() を使いましょう。 正規表現のコンパイラは、マッチ部分の探索を高速に行うために、 正規表現をそれなりに解析します。 そのような解析のひとつが、最初のマッチ文字が何であるか見付けることです。 たとえば Crow で始まるパターンは "C" で始まる文字列とマッチしなければいけません。 この解析により、マッチングエンジンは、文字列の中から最初の文字を素早く探索し、 見付かった場合だけ全体のマッチを試みるのです。 .* を付け加えると、この最適化ができないため、文字列の最後まで探索してから、 残りの正規表現のマッチ部分を探しに逆戻りすることが必要になるのです。
908 名前:904 mailto:sage [2008/12/30(火) 21:32:29 ] >>907 match でなくて search を使うところまではわかったのですが「次にマッチするもの」はどのように取得するのですか?
909 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:32:45 ] re.findall使えとかそういう話じゃないの?
910 名前:デフォルトの名無しさん [2008/12/30(火) 21:38:59 ] >904 >>> import re >>> l = 'hagefugahogemogepiyo' >>> r = re.compile('ge', re.I) >>> [m for m in r.findall(l)] ['ge', 'ge', 'ge']
911 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:40:00 ] python.jp の説明が糞な件
912 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:41:26 ] finditerの方が良いって話もあるけど実際どうなん?
913 名前:デフォルトの名無しさん [2008/12/30(火) 21:41:42 ] >>904 findall
914 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:48:11 ] >>> r = re.compile('(a)(g)', re.I) >>> [m for m in r.findall(l)] [('a', 'g')] >>> [m.group(0) for m in r.finditer(l)] ['ag'] >>> [m.group(1) for m in r.finditer(l)] ['a'] >>> [m.group(2) for m in r.finditer(l)] ['g']
915 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:50:11 ] >>910 [m for m in r.findall(l)] やってることが意味不明なんだがwwwwww
916 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:51:42 ] >>915 [o for o in [n for n in [m for m in r.findall(l)]]]
917 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:53:08 ] >>> r=re.compile('(a)(o)', re.I) >>> [m for m in r.findall(l)] [] >>> [m.group() for m in r.finditer(l)] [] >>> [m.group(0) for m in r.findall(l)] [] >>> [m.group(1) for m in r.finditer(l)] [] >>> [m.group(2) for m in r.finditer(l)] []
918 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:59:51 ] >915 おまえは黙ってろ
919 名前:デフォルトの名無しさん [2008/12/30(火) 22:27:12 ] >>910 >>> [m for m in r.findall(l)] ['ge', 'ge', 'ge'] >>> r.findall(l) ['ge', 'ge', 'ge']
920 名前:904 mailto:sage [2008/12/30(火) 22:38:51 ] >>910 のとおりだとうまくいかず、マッチするべきものの部分文字列のタプルのリスト (で表現があってるかどうかわかりません、間違っていたらごめんなさい) が返されてしまいます。 カッコ () がついたものだとダメなのでしょうか? 使用している正規表現は、単純化すると r'(ho|ge){2} [hoge] (ho[ge]){4}' のような形をしています。
921 名前:904 mailto:sage [2008/12/30(火) 22:45:54 ] 無理矢理、カッコを使わないような形にしたところ動きましたが、もとの正規表現のままで解決可能であればお願いします。
922 名前:904 mailto:sage [2008/12/30(火) 22:47:42 ] まだでしょうか
923 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 23:00:38 ] ん? regexp = re.compile(r'(ho|ge){2} [hoge] (ho[ge]){4}') [ m.group() for m in regexp.finditer('hoge h hoghoehoghoe') ] でいいだろ
924 名前:923 mailto:sage [2008/12/30(火) 23:01:55 ] あ、finditerの引数は実際の入力を入れるようにしてね
925 名前:904 [2008/12/30(火) 23:28:49 ] >>923 成功しました。ありがとうございます。 ※ >>922 は偽者です
926 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 01:02:38 ] くそったれなHTMLはBeautifulSoupに食わせてから他のxmlライブラリに渡せばいいことに気づいた
927 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 02:05:15 ] pythonのwebフレームワークはキャッシュ生成して鯖に負担かけないとかまでやってくれるのかな できないらword pressと組み合わせたほうがいいかとも思いはじめてるんだが
928 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 02:13:26 ] もしかしたらRuby使った方が効率がよいかもしれんが
929 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 02:56:04 ] >>927 WSGI対応フレームワークでは、それは Middleware の役割。 どのWSGI対応フレームワークからでも、プラグインのように、 必要に応じて CacheMiddleware等 を追加してサーバを構成する事が可能。(例: Pylons + Beaker)
930 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 06:49:39 ] >>927 Google App Engine はキャッシュ持ってますよ 有効期限も自分で設定出来る
931 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 09:52:29 ] RoRとかって以外と再利用性低いよな。 WSGIの世界になれると戻れない(www
932 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 10:14:12 ] >14 import urllib, urllib2, cookielib, time req = urllib2.Request('pc11.2ch.net/test/bbs.cgi ', urllib.urlencode({ 'bbs' : 'tech', 'key' : '1226830195', 'time' : int(time.time()), 'submit' : u'書き込み'.encode('sjis'), 'FROM' : 'fushianasan', 'mail' : 'sage', 'MESSAGE' : u'おっぱい'.encode('sjis'), 'suka' : 'pontan'}), {'Referer' : 'pc11.2ch.net/ '}) cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) res1 = opener.open(req) if '<!-- 2ch_X:cookie -->' in res1.read(): opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) res2 = opener.open(req)
933 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 10:16:56 ] おっぱい
934 名前:fushianasan mailto:sage [2008/12/31(水) 13:13:38 ] おっぱい
935 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 13:48:31 ] おっぱい
936 名前:fushianasan mailto:sage [2008/12/31(水) 15:35:55 ] ぱいぱん
937 名前: 【1603円】 【大吉】 mailto:sage [2009/01/01(木) 00:07:16 ] ( ゚∀゚)o彡おっぱいそん! ( ゚∀゚)o彡おっぱいそん!
938 名前: 【大吉】 【24円】 mailto:sage [2009/01/01(木) 00:10:44 ] おっぱい
939 名前: 【吉】 [2009/01/01(木) 00:15:16 ] しねばいいよ
940 名前: 【ぴょん吉】 mailto:sage [2009/01/01(木) 00:56:07 ] あけおめー
941 名前: 【1192円】 【大吉】 mailto:sage [2009/01/01(木) 12:59:17 ] journal.mycom.co.jp/articles/2009/01/01/python3/
942 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:04:43 ] 相変わらずヌルいなあ>後藤とかいうひと
943 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:10:08 ] Unix系なんでもライターだからこんなもんだろ。 例えば安藤さんのプロセッサ記事みたいなクオリティを期待しちゃいかん。
944 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:34:51 ] gihyo.jp/dev/serial/01/pythonhacks
945 名前: 【1499円】 mailto:sage [2009/01/01(木) 14:19:24 ] age
946 名前: 【小吉】 mailto:sage [2009/01/01(木) 14:19:53 ] >>941 >>944 GJ!!
947 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 16:54:40 ] >941 ●テキストからバイナリデータへの変換: str.encode() または str(b, encoding=...) ●バイナリデータからテキストへの変換: bytes.decode() または bytes(s, encoding=...) これは「または」の部分が逆ですか?
948 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 17:00:17 ] 自分で調べろ
949 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 17:03:32 ] As the str and bytes types cannot be mixed, you must always explicitly convert between them. Use str.encode() to go from str to bytes, and bytes.decode() to go from bytes to str. You can also use bytes(s, encoding=...) and str(b, encoding=...), respectively.
950 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 17:05:07 ] やっぱり誤訳ですよね
951 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 18:09:37 ] きっと気の利いた編集者がしょうがないなぁって直してくれたんだよ
952 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 20:09:25 ] Unix系なんでもライターだからこんなもんだろ。 元日だけにおめでたいことだ。
953 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 20:28:00 ] >>944 このページってリンク0000だけ? 何も出てこないんだけど
954 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 21:39:55 ] %愛してたのになくなるのか・・・
955 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 21:59:52 ] >>954 剰余算なくなるってこと??
956 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 22:27:06 ] print JK
957 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:03:27 ] >>954 print.format になるのか
958 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:38:33 ] >>955 文字列の % が format メソッドにかわるだけで 数字の剰余はそのまま残る
959 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:42:27 ] 3.0 の時点で既にobsolete docs.python.org/3.0/library/stdtypes.html?highlight=obsolete#old-string-formatting-operations
960 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:45:34 ] Pythonのお勉強 Part31 pc11.2ch.net/test/read.cgi/tech/1230821097/
961 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:46:03 ] >953 連載って書いてあるから、しばらくしたら追加されるんだろ