くだすれPython(超初心者用) その40
■ このスレッドは過去ログ倉庫に格納されています
★当スレにRubyのソースコード類を書くことを禁ず
☆Ruby等、Pythonではないプログラミング言語での回答を書くことも禁ず
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line/OS)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで
前スレ
くだすれPython(超初心者用) その39
http://mevius.5ch.net/test/read.cgi/tech/1535064635/
◆PythonのHome Page
http://www.python.org/
◆まとめwiki
ttp://python.rdy.jp/
◆ソースコードをそのまま5ちゃんにコピペするとインデントが崩れるので
こういうところ↓にはってきてください
ttp://ideone.com/ Pythonするにはぷち手間あるのがめんどうかなぁ
ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/ まずまずシンプル。
ttp://dpaste.com/ とてもシンプル。消えるまでの日数を長めに指定しる。
ttps://jupyter.org/try (旧try.jupyter.org)ちょっとめんどうそう
ttps://ja.osdn.net/pastebin/ ログイン必須になりやがった(゚Д゚#)
−−−−天麩羅ここまで−−−− jQuery のCSS セレクターを学べ。Emmet も同じ。
Ruby のNokogiri とか
# . >
id, class, など
XPath は可読性が低いから、CSSセレクターの方がよい Pythonによるスクレイピング&機械学習 開発テクニック使って勉強してるんだけど難しすぎない?
こんなのみんなできるのかよ スクレイピングは本当にめんどくさい
機械学習やるならデータセット使ったほうがいいんじゃないか htmlからデータをインポートしてxlsxwriterでexcel形式に変換させるファンクション作らなきゃいけないんだけど
まず任意パースからのインポートの仕方がわからなくて躓いてる... 特定のモジュールから発生する例外だけをキャッチしたいんだけど、どうやったらいいですか?
例えば以下のnumpyモジュールの例外だけ検知したいです。
例外を替えたりなどhoge()メソッド内は修正しないで。
――――――――――――――――――――
import numpy
def hoge():
123 + ‘a’ #=>TypeError
numpy.zeros((‘dummy’)) #=> TypeError (こっちだけキャッチしたい)
try:
hoge()
except TypeError as e:
print(‘numpyモジュールで例外が発生しました。’)
―――――――――――――――――――― インデントを全角にして再投稿です・・
――――――――――――――――――――
import numpy
def hoge():
123 + ‘a’ #=>TypeError
numpy.zeros((‘dummy’)) #=> TypeError (こっちだけキャッチしたい)
try:
hoge()
except TypeError as e:
print(‘numpyモジュールで例外が発生しました。’)
―――――――――――――――――――― 例外をキャッチしたあとスタックトレースの中をみて処理を変えたら? どちらも同じTypeErrorだから片方だけキャッチするのは難しい
キャッチ後にエラーメッセージで判別する位しか思いつかん >>6
>TheanoはWindowsでPython 3.5と互換性がない >>61
データセット便利やな。
てかpython勉強して1か月で
クラスとか継承で詰んでるんだけど
ここ最初に理解すべきなのかな scrapy使いおるか?
csvに保存するときフォーマット指定できないの? フォーマットて列の並びとかのこと?数値の桁とかのこと?
並びのことならFEED_EXPORT_FIELDSに設定しろとドキュメントにある。
桁とかの表現なら、cssセレクタで値を取得してFieldオブジェクトに突っ込んだすぐあとに、欲しい値が入ってるところをフォーマット済みのテキストに書き換えるとかはどうかな。
公式ドキュメントではFieldオブジェクトはビルトインdictのエイリアスだと書いてあるので、書き換えても問題ないかと。 >>69
classが分からない状態で機械学習とか過激派やね
何にしろクラスは基礎中の基礎なので、
とりあえず一つのクラスを作成していじり倒せるようにしたほうがいい
クラスの継承やトレイト辺りは「あーこういう機能があるんだな」ぐらいでいい。自分だけで作るならそんなに使わない >>71
レスサンクス
FEED_export_field はsettings.pyに書けば良いのかな
Fieldオブジェクトっていうのは
items.pyの中で定義したクラスのことかな
辞書的に後から編集できるのか、じゃあ余計な部分をトリムしたりstrからintに変換できるな >>75
itemの処理はpipelineを使うのが本来のやり方なのかな
parseメソッドに書いたら汚れるよね >>76
あー自分は使い捨てで作ってたからpipelineは知らなかった
けどこっちのほうがよさそうね 改行が含まれた文字列をそのまま出力するにはどうすれば良いんでしょうか
test = '改¥n行'
print test
これで改行されずにシングルクォーテーション抜いた改¥n行が表示されるようにしたいです print test.replace(‘\n’, ‘\\n’) 以下のような、Ruby のヒアドキュメントみたいに、
書いたものがそのまま表示される、機能は無いのか?
特殊文字が解釈されないもの
text = <<'TEXT'
改\n行
TEXT
puts text #=> 改\n行 >>80
この板の人たち事情があってRubyをNG登録してる割合高いから「名前を言ってはいけないあの言語」とかで言い替えたほうが読んでもらえるよ。 BashやPerlといえばどうか…複数行文字列なら"""〜"""や'''〜'''があるし
RAW文字列ならrプリフィックスを付ける、文字列リテラルの連続は結合される お前らPythonごときでくだらない質問なんてしてんなよ
こんなのただのスクリプトだから早くなれろ from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=options)
browser.implicitly_wait(1)
url = "http://yahoo.jp"
browser.get(url)
file = open("source.html","w")
file.write(browser)
file.close()
上手く書き出せません。どうしたらいいでしょうか?
恐らく型が違うのだと思いますが、それでも無理矢理書き出す方法はありますか? TwitterのAPIの取得って審査厳しいの?
取った人おる? >>84
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=options)
browser.implicitly_wait(1)
url = "http://yahoo.jp"
browser.get(url)
hoge = browser.page_source
file = open("source.html","w")
file.write(hoge)
file.close() >>86
レスありがとうございます。
とても助かりました。
また、これについて何とかそのままの状態でもエラーを発生させなかったり、
エラーを勝手に保存することでプログラムを止めないで次に薦める方法はありますか?
Perlをよく使うのですが、Perlの場合型が違った場合でもその型?のメモリ番地?を保存してくれそこから容易に調べることが出来ます。
また、実用上プログラムが止まらないので助かることも多いです
同じような使い方が出来ますでしょうか? 参考までに、Ruby のnokogiri を使って、スクレイピングしてみた。
head > title を取得した
require "selenium-webdriver"
require "nokogiri"
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = Selenium::WebDriver.for :chrome, options: options
driver.navigate.to "https://www.yahoo.co.jp/"
doc = Nokogiri::HTML( driver.page_source )
element = doc.at_css( "head > title" )
puts element.text #=> Yahoo! JAPAN
driver.quit >>87
>エラーを勝手に保存することでプログラムを止めないで次に
2系なら try except とゆう構文でエラー時エラーの種類と内容を書き出しつつ先へ進めさせることができるが
3系だとexceptのあとにエラーの種類を指定しないとおこられるようになったので
実質無理げー 例外の握り潰しか?
Ruby では、rescue で例外を捕捉しても、
何も処理せず、またはログを記録して、そのまま次の処理へ進む
例外の握り潰しは、やってはいけないのが常識だけど、面倒くさいならそうすれば?
ただし、仕事では禁止! >>1の冒頭に書いてもこれだからな。キチガイは始末におえない。
もうスレタイに書くしか。 >>85
7月にとったときは特に難しくはなかったよ、ただテストツイート一回でなぜかアク禁食らって一度取り直したけどw そっかー
残念!
仕事というか株の売買プログラムとかPerlで作ってるけど
再現性の低い通信エラーとか色々な理由で止まる方が困るからとりあえず動くのが大切
で、エラーが仮に出たとしても最後の所でしっかりとチェックして不正があれば全ての実行を取り消したり通知するようにしてるからミスが起こらない
プログラマとしてはダメなのかも知れないけど、自分で運用まで全て理解してやってると、とりあえず動いてくれる方が助かることも多いんだわ
頻度の少ないエラーとか全て潰してたら何年もかかるしね・・・
Pythonってとりあえず動かして、ちょっと修正してとかプログラムというよりもスクリプト的な使い方も多そうだから
エラーをスキップするような方法もあったら便利そうだけどかなり厳しい言語なんだな 漏れは、Ruby で、selenium webdriver を使うけど、
5ch, Showroom とか、しょっちゅうエラーが起きる
通信回線が混んでいると、1分掛かっても、全部を読み込めていないから、
外部プログラム(selenium)からアタッチできない
数十個のJavaScript を読み込むだろ。
延々と、アタッチできない状態が続く たぶん、向こうのサイトが、すべてのJavaScript を読み込んで、
idle 状態になっていないと、外部プログラム(selenium)からアタッチできない
アタッチ要求を出しても、ずっと待たされる >>93
うんこはperlに(・∀・)カエレ!!
そしてもう二度とでてくんな >>88
修正
driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 30 # 要素の検索の timeout
driver.navigate.to "https://www.yahoo.co.jp/"
sleep 10
doc = Nokogiri::HTML( driver.page_source )
通信回線の込み具合は、どうにもならない
要素の検索のタイムアウトを設定したり、スリープして待つとか、
異なるサイトなら、タスクランナーで並列化するとか >>91
真正基地外はスレタイ変えたくらいじゃ書き込み続けるだろ
基地害だから 96も1に違反してるじゃんw
それに他の言語からやって来たのならそれで出来ることを聞くのは普通じゃね? >>99
どこが違反なんだよ
名前すら出すなとは書いてないぞ >>1 Rubyガイジは煽りの相手をせずに淡々と書き込んでてワロタ Rubyのスレで淡々とやれよな…
こんな根性のやつらばっかりだから廃れるんだよ。
よそ様に迷惑かけるなんて日本人とは思えない。 >>100
Ruby書いてるのは論外だが自分のコメと1のコメを良く読んでみると分かるかと >>93
ゆるゆるで中でエラー出してても黙って動いて
訳の分からない結果が出力されるよりは
ちゃんとエラーとか例外吐いて止まってくれる言語の方が有難いとプロは考える >>87
ある箇所で発生する例外が確実に無害であると確信できるなら、全ての例外をexcept:で受けたあと、sys.exc_info()を呼んで戻り値をリストに保存する。
第三要素がtraceback型のインスタンスになっているので、tracebackモジュールの関数で適当にテキスト化してログファイルにでも書き出せばいい。 >>24
本環境にインタプリタ一つでやってる
pipで別のバージョン要求されても無視オプション
ただでさえ深い所にあるsite-packages/に差分増えるとか嫌すぎる
Pythonも3.6/に入ってたから、3.7に移行するともっとカオスになりそう
ということで全て~/site-packages/に移した
ずっとこれで行くと思う
問答無用モードのpipで入れても起動するときにバージョンで弾く奴も居るけど、__init__.pyあたりに判定コードがあるので消す
本当にバージョン依存のある正当な要求でも、例外起きた所に飛んで弄ればなんとかなる
(サイレントバグは知らん)
2.7で更新止まってる奴の改修もそんな面倒ではない
めっちゃ個人用だけど、ライブラリイジイジするのも勉強になる 無視オプションしても変なフォルダ増えてる事があるから安全ではないかな…
バックアップは取っとこう
本当はクローンしてきてコードのインポート回り見てから、必要でない物をsetup.pyやMakefile,requirementsから消すべきか
ピュアPythonならコピペだけど、こっちでバイナリ作るパッケは面倒 数百行のしょぼいコードでもパッケ管理リスト埋めるのも嫌だ、潔癖症だろうか
公式docでしばしばレシピ引用してるActiveStateよいよね、今は全然Activeじゃないけど…
こういう気軽にブラウジングしながらスニペット手に入るサイトって他に無いだろうかね?
ロゼッタコードも良いとこ
短いから、エディタと並べて解釈しながら自分流に書き直してライセンス汚染を防いでる気になってる
だ、大丈夫だろう多分… >>107
どっちかではなく、使い勝手次第でどちらもあると良くない?
デバッグの時はそれでないと困る ここには同意する
しかし再現性の乏しいエラーで止まるとそのたびにリセットが必要になるとか実用上困る
かといって100%確実に動作するまで利用できないのは不便
例えばだけど自作で液晶のIRリモコン作ったんだけど、下手にバグで止まるとそのたびにリセットが必要になり面倒
しかし、バグを無視してくれるなら2回押すだけで何事もなかったように動作してくれるとかね
特に再現性の乏しいバグだとデバグのコストの方が大きくなる気がする
プロ兼経営者はこのようには考えないの?
>>108
ありがとう >>111
VSCode の拡張機能に、Python スニペットは無いの? >>112
バグったまんまのリモコン、承知の上でバグ握りつぶして出荷とかバレたら倒産沙汰だろ >>117
大量にあるならデバグしっかりしろって話
問題として挙げてるのは通常だと発生しないレベルの話ね 大学でやっている教科書以外に、
今は「わかるpython」勉強中 〜Python[リスト]〜
a=[10,22,40,45]
a[0]
10
a[3]
45
a=[10,22,30,45]
a[1]=555
a
[10,555,30,45]
#リストの長さを求める
a=[1,2,3,4,5,6,7]
len[a]
7
b=[0,2,4,6]
len[b]
4 そもそもウンコスクリプトで書いてるのにでたらめもへったくれもない
ウンコスクリプト自体がでたらめだからな >>118
>通常だと発生しない
この判断が謎基準あるいはお前基準だろ
とりあえずおまえは自家消費以上のことはすんな
ネットで成果を公開とか迷惑ンゴ >>124
なんでウンコスクリプトのスレをわざわざ見に来てんの?馬鹿なの? >>125
ごめん
プロ兼経営者がどのように考えているか、それが知りたいんだわ
あと、ソースは昔から公開してるけど使う使わないは個人の自由
使いたい人が判断したらいい
ただ、ちょっと古い家電とかリモコン製造中止で、買い替え+工賃で30万とか普通にあるけどな >>127
再現性の乏しいバグってのが何を指しているのかわからん。バグはバグ。
発生率が高かろうが低かろうが、処理続行してもいいのは想定内かつ安全な例外だけだよ。
自分にとって想定外なんてのは他人にとっては想定内で、単に自分に技術がないだけと思うべし。
本当にどうしようもないエラーの場合は、プログラムは落として、プログラム外からインテグリティチェックをかけてから再起動するような設計にすること。これは例外で握りつぶしてはいけない。
本当にどうしようもないエラーってのは、回路に蛾がはさまって短絡したとかそういうのね。 超初心者だからスプリクトの1行ごとにコメントと改行を入れてるんだけど
実行速度が遅くなったりしますか?
200行程度じゃ変わんないですか? 数百メガバイトのソースコードなら何秒かかかるかも
ただしバイトコードにコンパイルする時の話で、バイトコードコンパイル後はコメントやらは消えてるから影響しない プログラムが動いてる間は毎回コメントも認識されるんだと思ってた
最初重いだけなら思う存分コメントがかけます
ありがとう! Ruby はインタープリタだけど、
一旦ソースコードが中間言語にコンパイルされて、仮想マシンRubyVM で実行される
だから、コンパイル時の構文解析時に、普通のコメントなどは除去する
でも、アプリ実行中にアクセス可能な、特別なコメントの書き方もあるかもしれない。
テスト用コメントなんかはそう
コメント内に、特別な記法で書いておいて、テスト可能なようにしている 複数行コメントする方法で
'''
コメント
コメント
'''
で囲む方法があるけど、これは消えないですよね?
使わない方がいいって事ですか? 消えるってコンパイル時にって事?
コメントは全部削除される
ってかコメントに対してパフォーマンスなんて求めるもんじゃない >>136
使って
コメントなんて いっぱいしておかないと。
今は至れり尽くせりにしたつもりが
1年後には言葉足らずとなり
過去の自分を呪うぞ コメントのせいで容量が100倍に膨れ上がったりすればコンパイルがほんのちょっと遅くなるかもしれないけど
ソース1行に対してコメント100行書くほどの文章力がない 仮想通貨に使われる技術「ブロックチェーン」をベースにした宗教「0xΩ」の存在が発表されました。
0xΩは宗教活動をブロックチェーンを通じて行うというもので、創設者は「最高権威」という立ち位置になく、
また信仰内容は信者が変更できるという、一般的な宗教とは異なる仕組みが取られています。
https://gigazine.net/news/20180604-blockchain-crypto-cult/ 晒すソースのコメントは英語で書けよ
PEP8からのお願いな jupiter notebook をmyPCに入れようとしたけど、
空いているソフトがありませんとインストールエラーが出て使えなかったから
仕方なくPycharmでやってる。 jupiternotebookをインストールする空ファイルに、
日本語が入っているとできないので、ローマ字だけでないとできないようだから注意な。
これ豆。 >>136
コメントではなく文字列だからね。ちなみに代入や出力しない文字列のみを
モジュールやクラス、メソッドの先頭に書くとドキュメンテーションにもなる
これは-OOオプションやPYTHONOPTIMIZE環境変数を相当にする事で除去される ■ワイヤレス給電ができる道路で、送電線が消え(ワイヤレス給電のコイル部分が送電線の役割も果たす)
バス、タクシー、トラック運転手やamazon、郵便配送員が自動運転化され、
ガソリンスタンドがなくなり、工場作業員(EVはモーターとバッテリーをくっつけるだけでできるので、
格段に生産工程がシンプルにできる)も自動化され、コンビニ店員もデジタル決済化で消え、
いまわしい存在が道路や街の景色から消えれば、
どれほど輝いて街の景色が見えるだろうか。
「すべては、道路をワイヤレス給電できるかどうかにかかっている」
卒論では、送電線とコイル一体化型の
道路のワイヤレス給電システム実現に向けた研究を行う可能性が高い。 ひさびさに古いpython使おうとしたらpipが実行出来なくなってた
溜めてたソース全部捨てて一から描き治すか >>147
ヘ⌒ヽフ
( ・ω・) dd
/ ~つと) >>149
pip install pip --upgrade pythonってswitch文みたいなのって無いの? switchは構文糖衣だし
実際それほど便利じゃないし
本気で数字で分けるだけなら
函数テーブル使った方がマシでっせ d = dict(状態=やること関数)
d["状態"].() ■ このスレッドは過去ログ倉庫に格納されています