[表示 : 全て 最新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/

876 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 02:07:46 ]
まあその辺は元からのPythonユーザや、このスレ見てる人にはわかってることでしょ

Pythonとやらを試してみっか、と考えた大量の新規ユーザが
地雷にはまってるだろうことは想像に難くないが

877 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 03:03:52 ]
>>876
ライブラリが対応しているかどうかはプロジェクトのページを見れば書いて
あるし、まだほとんどのlinuxディストリビューションでは3.0は標準でイン
ストールされていない。その状況には同意しかねる。
それに公式のダウンロードページにもこう書いてある。
> Note that both Python 2.6 and 3.0 are considered stable production
> releases, but if you don't know which version to use, start with
> Python 2.6 since more existing third party software is compatible
> with Python 2 than Python 3 right now.

ここであえて3.0を選ぼうという初心者が大量にいるとは思えない。

878 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 03:11:25 ]
そんなことはスルーor知らずに3.0選んでこそ真の初心者とも言えるがな

879 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 03:28:55 ]
初心者ならLinux使ってないだろうし
良く知らない言語をちょっと試すかってときに
わざわざ英文なんて読まないよな

880 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 03:34:32 ]
ttp://japanese.joelonsoftware.com/uibook/chapters/6.html

881 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 04:10:14 ]
日本語ドキュメント、書籍、等の外部のリソースの事も考えると
公式サイトの勧めているバージョンが、必ずしも全てのユーザに合ってるとは限らないってのが現状じゃない?
いくら互換性があるといっても、(2.x系)例えば windowsユーザだと、ライブラリのインストールで
ビルド済のインストーラが必要なユーザ層等もいるはずだし。

今は、若干 Python のリリースが先行してる時期だと思う。
早くどれかのバージョンに収束して欲しいという意味を込めても、
出来るだけ新しい安定版を勧めたいとこだけど...

その辺(これからどのバージョンを使うか)の認識って皆どうなんだろう?


882 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 04:16:00 ]
とりあえず、自分の認識をまとめて書き出してみる。(突っ込み歓迎)


これからPythonを試してみる人
ライブラリ類が必要 -> 2.x
日本語ドキュメントも必要 -> 2.5
レンタルサーバで使いたい -> 2.4 が無難?

これから新規にライブラリを書く既存Pythonユーザ
2.xユーザを考慮するなら -> 2.6 ベースでコード書いて2to3

新規にアプリケーションを書く人
ライブラリが必要なら -> 2.x
過去の遺産なんていらない -> 3.0

こんなアドバイス必要ない
-> 複数バージョンをインストール済


883 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 04:39:04 ]
>>866
国語力ないですねw

884 名前:デフォルトの名無しさん [2008/12/30(火) 05:32:48 ]
これからPythonを試してみる人 -> 3.x
ライブラリ類が必要 -> 2.6.x
日本語ドキュメントも必要 -> 2.6.x
レンタルサーバで使いたい -> 2.6.x

これから新規にライブラリを書く既存Pythonユーザ -> 3.x
2.xユーザを考慮するなら -> 2.6.x ベースでコード書いて2to3
新規にアプリケーションを書く人 -> 3.x
ライブラリが必要なら -> 2.6.x

こんなアドバイス必要ない -> どうせ読んでないだろうから何も言いません



885 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 05:44:29 ]
いろいろ、ごにょごにょしようとすると、
ライブラリ便利だなぁ、、

886 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 06:06:17 ]
ライブラリの力を自分の能力と勘違いしてしまいますよね

887 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 07:17:39 ]
>>879
なら、本、買えよ
中央図書館で借りてこいや

888 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 07:29:43 ]
いるいる
勘違いした香具師

889 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 07:39:06 ]
>>879
> 初心者なら(略)読まないよな

帰国子女初心者の僕に対する挑戦と受け取りますた


890 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 07:57:41 ]
BeautifulSoup Release 3.1.0 (2008/12/27)

2.4/3.0 のハイブリッド版。新しい機能の追加等はなし。3つの後方非互換が在り。

1. str()や__str__の振舞が変わる。-> バイト文字を得るにはencode()/unicode文字を得るには decode() を使う。
2. SGMLParserベースからHTMLParserベースに変更。(sgmllibが標準からなくなるため)
此れにより、壊れた HTML文書 を扱えなくなる。
将来のバージョンでは、速度と壊れたHTML文書の扱いのトレードオフで、パーサを選択できるようにする予定。
3. (Python3で) 属性中のエンティティの扱いで、パース時にunicode文字に変換されることがある。
例: <a href="crummy.com?sacré&bleu"> -> Python 3 では é が "\xe9" に。


891 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 08:27:42 ]
3.0対応版出すの早いな。GJ

892 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 08:33:57 ]
ライブラリなかったら他の言語使うし

893 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 09:22:13 ]
ライブラリ使わない開発なんてあるのか?
Hello Python!レベル?

894 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 12:01:18 ]
帰国子女って変な用語だよな
帰国子士にすべき



895 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 13:11:55 ]
谷底から這い上がってきた感じがする

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