[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/24 01:18 / Filesize : 206 KB / Number-of Response : 962
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pythonのお勉強 Part30



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
連載って書いてあるから、しばらくしたら追加されるんだろ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<206KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef