Pythonのお勉強 Part50

このエントリーをはてなブックマークに追加
500デフォルトの名無しさん:2015/03/10(火) 09:04:15.13 ID:XNSpCIll
>>498
お前はデバッグせずにlxmlが動かない理由が分かるのか?
501デフォルトの名無しさん:2015/03/10(火) 09:14:58.22 ID:FIkaoC+g
検索したらstackoverflowがやたらヒットして迷惑だからgoogleは対策すべき。
502デフォルトの名無しさん:2015/03/10(火) 09:39:09.58 ID:7NzT/F8x
>>500はなかなか面白い返しだ
世の中いろんな奴がいるなあ、と考えさせられたぜ
503デフォルトの名無しさん:2015/03/10(火) 09:48:58.16 ID:6CfKdFZo
釣りじゃないなら煽ったり知ったかぶれば答えてもらえるって本気で信じちゃった純真な奴か
いずれにせよ哀れでならない
504デフォルトの名無しさん:2015/03/10(火) 09:49:01.35 ID:3b2ZvRyg
>>492
?? 上級者なら教えてくれよ
○ 下僕なら代わりにやってくれよ
505デフォルトの名無しさん:2015/03/10(火) 09:49:32.45 ID:OpBf48bx
アメーバの方が優秀だな
506デフォルトの名無しさん:2015/03/10(火) 09:57:35.09 ID:XNSpCIll
自称回答者がこのスレを見てる意味がよく分からん
いつも実行もせずに妄想で答えてるのか
507デフォルトの名無しさん:2015/03/10(火) 10:41:17.66 ID:OpBf48bx
原形質流動の観察って授業があってぇ…
508デフォルトの名無しさん:2015/03/10(火) 10:45:47.21 ID:wWdegVFt
>>506
まあ落ち着け
Dive into python3 で似たようなことやってるから
じっくり読み込んでやってみ
509デフォルトの名無しさん:2015/03/10(火) 10:59:57.76 ID:wb2e65jI
原因を聞いているのに似たようなことやってるから〜とか、端から見ても珍回答だな。
体よく追い払おうとしているようにしか見えない。
510デフォルトの名無しさん:2015/03/10(火) 11:22:30.46 ID:nkUqlG97
自分で「おそらくparse失敗している」って思うんなら、lxmlのドキュメントを読みながら成功した時と失敗した時の入力をよく見てみろとしか言えない
誰がやってもやることは同じだよ

あと、こういうことを聞くときは問題が再現する最小コードを出すもんだ
511デフォルトの名無しさん:2015/03/10(火) 11:27:03.22 ID:wWdegVFt
>>509さんが懇切丁寧に答えてくれるそうですよ
512デフォルトの名無しさん:2015/03/10(火) 11:33:47.80 ID:lRdZfHED
本人だろw
513デフォルトの名無しさん:2015/03/10(火) 11:37:23.31 ID:XNSpCIll
どういうことなのかさっぱり分からん
ここの人らはソースをちらっとは見たけど、どこが問題なのかは特定できなかった、ということで良いのか?
スレの構造はどう考えても同じだろうに
514デフォルトの名無しさん:2015/03/10(火) 11:46:31.67 ID:wb2e65jI
それは流石に思いこみが過ぎる。
検証したか?していないだろう。
515デフォルトの名無しさん:2015/03/10(火) 11:54:09.42 ID:iQXYHRS4
スクレイピング小僧対策にわざわざ構造を壊すこともあるし。
特に2chはscの件で敏感になってたしね。
516デフォルトの名無しさん:2015/03/10(火) 12:01:08.59 ID:wWdegVFt
>>514
どうでもいいレスしなくていいから
早く調べて答えてやれよ
517デフォルトの名無しさん:2015/03/10(火) 12:10:58.87 ID:0x74jrgc
キンタマ弄って遊ぶのはその辺にしとけ
518デフォルトの名無しさん:2015/03/10(火) 12:57:58.73 ID:3b2ZvRyg
問題はデータにありそう。
最小のコードというのは、最小のデータも含む。
もしかしたら、アクセス元によってデータが変わるかもしれないし、プログラムからアクセスしていいかの利用規約も確認しなきゃいけないので、全部やるのは面倒。
519デフォルトの名無しさん:2015/03/10(火) 13:01:01.34 ID:XNSpCIll
できた。やっぱりスクレイピング対策とかHTMLの構造は関係なかった
parseが自動で見つける文字コード(shift_jis)とHTML内の機種依存文字(V)が矛盾しているのが原因っぽい
だからfromstring使ってunicodeにデコードした文字列を渡せば良いだけだったわ

from lxml.html import fromstring
from urllib.request import urlopen

url = 'http://wc2014.2ch.net/test/read.cgi/sci/1343188288/'
doc = fromstring(urlopen(url).read().decode('cp932'))
print(len(doc.text_content())) # 126937
520デフォルトの名無しさん:2015/03/10(火) 13:45:49.10 ID:3b2ZvRyg
やっぱりデータじゃねえか。
521デフォルトの名無しさん:2015/03/10(火) 15:19:51.05 ID:XNSpCIll
は?
522デフォルトの名無しさん:2015/03/10(火) 15:20:58.32 ID:MFu713zA
叩かれて同情してたけど>>486>>488見て呆れた
こういう考え方する人プログラミング向いてないよ
523デフォルトの名無しさん:2015/03/10(火) 15:21:32.81 ID:XNSpCIll
何の参考にもならないこと言っておいて「やっぱり」はねえだろ
文字コードだと言うのならまだしも、データ?
そりゃデータだろ。馬鹿かよ
524デフォルトの名無しさん:2015/03/10(火) 15:23:27.55 ID:XNSpCIll
>>522
このスレの誰一人として、プログラミングに向いてると思える片鱗が一ミリも見えないんだけど
なぜか、俺はプログラミング上級者でございみたいな顔でレスしてる方が謎
525デフォルトの名無しさん:2015/03/10(火) 15:26:30.88 ID:XNSpCIll
ROMってるやつはたくさんいるようだが、自分が分からないと様子見しているようだ。それはまあ良いよ
>>480からやっとレスが付いたのが3日後、しかも妄想回答
妄想であることを指摘してやると切れ始める。どうせ何の答えも出せないんだから最初から黙っていて欲しかったよ
次に誰か質問した時もそうだ。絶対お前らは口を出すなよ。どうせクソの役にも立たないんだから
526デフォルトの名無しさん:2015/03/10(火) 15:26:50.50 ID:MFu713zA
こいつやばすぎだろ
527デフォルトの名無しさん:2015/03/10(火) 15:29:08.32 ID:XNSpCIll
何のためにお勉強スレに常駐してるんだ?
少しは役に立つレスをしろよ
528デフォルトの名無しさん:2015/03/10(火) 15:41:47.67 ID:GWDqHHzE
>>506
適当に答えて正解だと楽しいよ
529デフォルトの名無しさん:2015/03/10(火) 15:48:44.67 ID:wWdegVFt
>>527
どういうプロセスで凡ミスに気がついたのか書くことも
このスレにとって有益だと思うのですが書いていたたげませんか
お願いします
530デフォルトの名無しさん:2015/03/10(火) 16:33:39.50 ID:0x74jrgc
今日は暖かいからな
531デフォルトの名無しさん:2015/03/10(火) 16:49:45.10 ID:GWDqHHzE
啓蟄
532デフォルトの名無しさん:2015/03/10(火) 19:05:33.59 ID:XNSpCIll
>>529
pythonはうまく行かなかったらエラーを吐いて止まるところが良いのに
parseは失敗しても読み込めた場所までのetreeを返しているように見える。これは嫌な仕様だ
何か値が返ってくるので一見成功しているように見えるから、なぜ中身が中途半端なのか分からない
パース前のデータを見ようとurlopen(url).read().decode('shift_jis')とすると、そこでエラーを吐いてやっと何が問題なのか分かる
htmlファイルをそのまま見比べ続けたりdiff取ったりしても無理だっただろう
decodeなら、errorsオプションを指定することでデコードできない文字に対してエラーを吐くか読み飛ばすかを選択できるけど
parseにはそういったオプションはなく、何をやってるのか分からない。失敗したくせになぜ停止しないんだ

というか結局どの文字コードでもエラーになるスレがあるけど
重要じゃない文字っぽいのでスルーすることにした
doc = fromstring(urlopen(url).read().decode('cp932', errors='ignore'))
文字コードは闇。おわり。正解があるならplz

しかしこの問題は少しでも経験がある人なら一瞬で気付けたと思うので
数日後に上級者ぶって的はずれな説教を始めるこのスレはやはり使い物にならないと言わざるを得ない
533デフォルトの名無しさん:2015/03/10(火) 19:35:24.00 ID:tNP8NWPb
>>532
じゃあもう来るな

で終了
534デフォルトの名無しさん:2015/03/10(火) 19:40:35.76 ID:zHhbDfod
コミュ症、糖質、あるいは発達障害かも
優しくしてあげな
535デフォルトの名無しさん:2015/03/10(火) 19:45:25.31 ID:XNSpCIll
>>534
プログラミング分からないなら黙ってたほうが良いのでは
536デフォルトの名無しさん:2015/03/10(火) 20:01:31.71 ID:sfYa099T
だから電車に飛び込んで死ねって助言したのに
今からでも遅くないよ
537デフォルトの名無しさん:2015/03/10(火) 20:09:19.61 ID:6CfKdFZo
lxml.htmlって腐ったhtml用だろ
どうしようもなくならない限り例外出さないし2chのhtmlはもちろん腐ってるから他のパーサーだと面倒なはず
538デフォルトの名無しさん:2015/03/10(火) 20:27:30.27 ID:GWDqHHzE
専ブラがAPIで使えなくなるから
ローカルproxy造るの流行ってるみたいだけど
スクレイピングは禁止というのが2ちゃんのスタンス
539デフォルトの名無しさん:2015/03/10(火) 21:05:02.40 ID:81PK0HaL
馬鹿どもにパソコンやスマホを与えるな
540デフォルトの名無しさん:2015/03/10(火) 23:24:20.49 ID:XNSpCIll
フェアウェル・プログラムの結果発表
この板全体の単語頻度(ただし'C'や'#'は簡単のためにノイズとして除去されてる)
大文字と小文字どちらかに統一すれば良かったとあとから思ったけどまあ良いや

なんと馬鹿 (1644)は65位でした!
何の生産性もない、貶し合うだけの板なんて、そろそろおいとましよう

1: 言語 (12722)  2: コード (8511)  3: 人 (7336)  4: 関数 (6599)  5: 問題 (6194)
6: スレ (5836)  7: ファイル (5710)  8: 必要 (5595)  9: 場合 (5434) 10: 自分 (5245)
11: 文字 (4289) 12: ソース (4235) 13: Java (4215) 14: 今 (3858) 15: データ (3804)
16: 方法 (3703) 17: クラス (3691) 18: 環境 (3574) 19: Windows (3405) 20: int (3402)
21: 変数 (3198) 22: ライブラリ (3168) 23: 仕様 (3125) 24: Ruby (3093) 25: アプリ (2969)
26: 前 (2800) 27: if (2780) 28: 情報 (2676) 29: 感じ (2675) 30: 可能 (2667)
31: for (2641) 32: 部分 (2626) 33: 普通 (2564) 34: オブジェクト (2424) 35: 他 (2391)
36: 日本語 (2346) 37: コンパイル (2317) 38: 簡単 (2292) 39: 本 (2288) 40: 結果 (2258)
41: 時間 (2234) 42: 名前 (2220) 43: 列 (2197) 44: hoge (2141) 45: レベル (2068)
46: メソッド (2036) 47: Python (1961) 48: 値 (1946) 49: メモリ (1896) 50: 型 (1890)

https://www.dropbox.com/s/omwbh5clw3hvb4a/word_frequency.csv?dl=0
541デフォルトの名無しさん:2015/03/10(火) 23:37:16.18 ID:uWF4ePWz
numpyで、以下のような2次元配列の条件付インデックスをしたいんですが、可能でしょうか。

A=array([[2, 1], [3, 4], [6, 5]])
で、A[i][0]>A[i][1]となる、行だけを取り出したい。
この場合は、
A=array([[2, 1], [6, 5]])
542デフォルトの名無しさん:2015/03/11(水) 00:28:43.75 ID:nZT0Sfh/
filter(lambda x: x[0] > x[1], A)
かな
543デフォルトの名無しさん:2015/03/11(水) 00:31:54.13 ID:Qxpez3uG
おお、全部小文字にしたらランキングが大きく変動した。それではさよなら

>>542
それはpython3だとfilterオブジェクトを返すので、一旦listにキャストしてからじゃないとarrayに戻せないから冗長になる
普通にリスト内包表記使ったほうが良い
544デフォルトの名無しさん:2015/03/11(水) 02:07:45.91 ID:y/rYbl4Z
もしかしてこいつずっと居る気か
545デフォルトの名無しさん:2015/03/11(水) 07:03:33.66 ID:5EkQ77dJ
暇人が餌を与えなければ消えるよ
野良猫みたいなもんだ
暇人から駆除すべき
546デフォルトの名無しさん:2015/03/11(水) 07:15:56.16 ID:ohxGoG6/
何も有意義なレスをしないくせに常駐している暇人が恥をかかされて負け惜しみを言ってるようにしか見えない
547デフォルトの名無しさん:2015/03/11(水) 07:30:36.51 ID:YwNWS2C9
他人を利用することしか頭にないダニが何か言ってますね
548デフォルトの名無しさん:2015/03/11(水) 08:12:22.93 ID:EDIhvA8q
>>545
ほんそれ
549デフォルトの名無しさん
ID導入で鎮静化

API導入で専ブラリストラ&移転騒ぎ

人減り過ぎ

運営あわててBBq規制ゆるめる

IP変えてIDもいつでも変えられる人増える

元の木阿弥