Pythonのお勉強 Part54 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
まとめWiki
http://python.rdy.jp/
関連スレ
ttp://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
日本Pythonユーザ会 (※英語わかる人は上記のオフィシャルの方を見ることをお薦めします)
http://www.python.jp/ PythonのUnicodeEncodeErrorを知る
ttp://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
よくまとまってた。あとで読む ※NGワードの対象がわからずテンプレが分散してしまった事をお詫びします。本来なら以下の通りでした。
Pythonオフィシャルサイト
http://www.python.org/
まとめWiki
http://python.rdy.jp/
関連スレ
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
( http://find.2ch.net/search?q=python )
日本Pythonユーザ会 (※英語わかる人は上記のオフィシャルの方を見ることをお薦めします)
http://www.python.jp/
日本語の扱いで戸惑ったらこちらをどうぞ(バッドノウハウ集で笑える)
ttp://atomic.jpn.ph/prog/etc/encode.html
ttp://d.hatena.ne.jp/kakurasan/20100330/p1
PythonのUnicodeEncodeErrorを知る
ttp://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
よくまとまってた。あとで読む
■前スレ
Pythonのお勉強 Part53
http://mevius.2ch.net/test/read.cgi/tech/1494683284/ ハロワのブラック企業にはpythonは使いこなせないだろうなwantedlyで探してみたら >>8
そっちも大概だぞw
インターンやりがい搾取、DMCA takedownによる言論封殺 ハロワでPHPもJavaも一件もヒットしないなんでだ https://ideone.com/wSgPJA
このコードを 3.6.2 で実行した結果は、皆さんのところではどうなりますか? #!/usr/bin/env python3
# -*- coding: utf-8 -*-
Pythonのスクリプトでシェバン行って無意味ですか?
ネット上のサンプル等でも書かれてない場合が多い気がするんですが
自分的にはこれはPython3だよ!ってコメント的な意味でも付けて置いた方が
50年後とかに見返した時に間違ってpython4や5で実行しなくて済むと思うんですが シェバンの意味を知ってるなら自ずと分かると思うけどなぁ
ただのコメントではないよ >>15
おかしいな,手元の教科書では import secrets でもいけるって書いてあるんだが >>19
仮にimport secretsしてるなら、何行目でsecretsモジュール使ってるの? >>14
https://ideone.com/wSgPJA
の実行環境のPythonのバージョンはいくつか確認した?
該当するバージョンのsecretsモジュールのリファレンスは見た? >>19
https://ideone.com/wSgPJA
の実行結果からどんなエラーが読み取れてますか?
それともどんなエラーが出てるか見当もつかない感じですか? >>16-18
shebang シバン
シェルで、コマンドを打った時、
そのファイルの1行目が、#! で始まっていれば、
そこで指定されたアプリが実行される >>24
どんなエラーが出ているのかもわからない状況です.
よろしくお願いいたします すいません なぜだかPythonはファイルをダブルクリックしても実行出来ないって思い込んでました
今やったらちゃんとシェバンを解釈して実行できるじゃないですか >>29
> シェバンを解釈
するのは/bin/shとかだよ。 >>30
知らないならテキトーなこと書くなよ
ファイル先頭のシバンを認識するのは、OSのexecveシステムコール (execを参照)を処理するルーチン中のプログラムローダーである。
https://ja.m.wikipedia.org/wiki/%E3%82%B7%E3%83%90%E3%83%B3_(Unix) py.exeは「3」の数字を読みわけるだけみたいだけどな。
#!python3
#!python
でちゃんと振り分けられる。 py.exeは設定ファイル(py.ini)いじれば
#!pypy
とか
#!ironpython
とかなんでも行けるようになるので意外と便利 >>31
そういうレベルというか処理の深い話をしても >>29 へのレスにならんでしょう。
#!/bin/no-such-file でも設定して実行してみれば、発言趣旨は分かるんじゃないの。 >>36
質問者が馬鹿だからいい加減なことを言ったと言うんですか?
Pythonスクリプトのシェバン行をPython自体が解釈するなんて
そんな再帰的すぎてわけわからんことを私は一言も書いた覚えはありませんよ
馬鹿扱いされたのも不満ですが私自身が誤った仮定をもとに質問をした経緯があるのでそこは我慢しましょう
でも私の程度が低いからあなたは仕方無くいい加減な事を言ったみたいに言われると許せないですね
あと苦し紛れに #!/bin/no-such-file みたいな事を書くのもどうかと思いますよ >>39
> 質問者が馬鹿
とも、
> Pythonスクリプトのシェバン行をPython自体が解釈するなんて
> そんな再帰的すぎてわけわからんことを私は一言も書いた
とも思わないが、端的に例示したものを、周りに煽られて理解できなくなってしまうのは困ったものだと思うよ。
まぁ俺の問題じゃないので虚実判断はご随意に。 >>40
何を主張したいのか理解できないけど>>30が間違ってることとは事実だし>>29への回答として正しいとは思えない 知ったかぶりして間違いを指摘されて恥ずかしくて開き直る
誰だって一度や二度はあるだろ
優しくしてやれよバカにはw 知らない人が質問して
知ったかが回答して
知らない人が発狂して
便乗バカがイキってる ←今ココ どうせ仕事にならない、使わないで終わるんだからやらなくていいだろ。
エロ画像のファイル名変換程度にしか使わないんだろうし
憤慨してディスクごと再フォーマットで全部消去でいいすよ。すっきりとする。 giとして利用しない限りwindowsでpythonやるならシェバンなんて書いても意味ない cgiとして利用しない限りwindowsでpythonやるならシェバンなんて書いても意味ない もみじまんじゅう先生のSQLalchemyの、プロポーザル落選してたのか、聞きたかったな pandasのデータフレームを、SQLで操作できるメソッドとかあります?
イメージは、↓みたいなの
結果 = pandas.execSQL('select var1 from データフレム') 皆さんpythonでの開発には何のエディタ使ってますか?
ちなみに自分はspacemacsです >>59
エディタなんて飾りですよ。
えらい人にはわからないんですよ。
ちなみに私はpychamですけどね。 emacs + evil
でも、Python 用のカスタマイズはとくにしてないから、色付け・補完・eldoc くらいしか恩恵がない vscodeをemacsキーバインドで。
ところでvim多いな。 ある長い文字列の中から一文字違いの短い文字列を探すアルゴリズムはどう書くとシンプルなのでしょうか?
イメージとしては、gmajtpwjadmjgptwみたいな適当な文字列からwnadと完全一致または一文字違いの部分を探す、というものです
一文字ずつ抽出・スコアリングが良いのかなあと思っているのですが、やたら長くなりそうなので... 正規表現使って検索するのが楽なのでは。
wnad
.nad
w.ad
wn.d
wna.
の5パターンを検索すれば良いよね。 >>78
ありがとうございます
明日、早速試してみたいと思います ttp://news.mynavi.jp/news/2017/09/11/021/
最も成長しているプログラミング言語はPythonだそうです
RubyよりPythonを選んだそこのあなた! 正解です print文で出力をする際に
print(A + ' ' * B + C) と書くか
print(A +
' ' * B +
C)
と書くかでどちらの方が良いのでしょうか 本当にシンボルが各1文字なら上
各シンボルが50文字くらいあったら下…ではなく必要十分に省略できるか検討する
無理なら80文字または100文字で折り返す >>84 >>85
ありがとうございます
まずは1行で書いてどうしても無理なら折り返すようにします Windows10でpythonのAnacondaディストリビューションを使っています.
最近PCを新調して入れしなおしたのですが,py.exeがインストールされないみたいでshebangが実行されません.
一部のスクリプトで実行環境を分けたい事情があるのですが,何か良い方法ありますか? >>88
お返事ありがとうございます.仮想環境は作れました.
実行するときにshebangで環境指定して実行というのがしたかったのですが
venvのドキュメント読んでもよくわかりませんでした.
とりあえず,以下のバッチファイルから実行するようにしました.
activate env_name & python script_name.py & decativate そもそもAnacondaにpy.exeは付属していない
いつからって?今も昔もだよ
公式のCPythonのインストーラでカスタムインストールを選べば
py.exeだけインストールできる
CPythonのアンインストーラがデフォルトだとpy.exeをアンインストールしないので
後からAnacondaをインストールした時に一緒にインストールされたと
勘違いしたのだろう >>7
いまどきハロワで仕事探してる時点でヤバイだろ
あそこは手当もらう人とジジババが行く場所 EXCELのVBAぐらいで開発環境について何もわからないんですが
Pythonista for iOS
これ買おうか迷ってます。1200円ってなんでアプリだと高く感じるのでしょうねw スマホでコード書くのはとてもつらいよ、それでもよければ pythonのパッケージってあっちのプロジェクトでfoo.bar、こっちのプロジェクトでfoo.bazみたいにできなくて
それぞれfoo_barとfoo_bazみたいな名前でやるものなの? 技術評論社のjupyter本読みたい 固定じゃなくてリフローなのは良いな サンプルで前書だけじゃなくて少し読めるのもいい
ただ3500円はちょっと高いんだよな紙なら中古を狙うんだけど >>103
おお、こんなのあるんですね、
DRMの無いEPUBでダウンロードできると助かるんですが pythonでリアルタイムでスクレイピングして得られたデータをf.writeを使ってtxtに書き出しているんですが
たまーに
「PermissionError: [Errno 13] Permission denied:」
が出て止まってしまいます。
書き込みに失敗したんだと思いますが、書き込みに失敗しても無視してプログラムを動作させたいのですが解決策ないでしょうか >>109
うっかり読んじまったじゃねーか
何もいい事なかったぞ?
どうしてくれるんだこの時間 >>110
いやーマルチスレッド環境とかでも整合性保ったままファイル出力をするし、限りなくフェイルセーフだし読み直せよ >>113
それを最初から言ってくれれば読まなかったのに
なぜ他人が自分と同程度に無能だと思い込んでる? ここってchainer2の話題も使っていいんですかね
一応言語自体はpythonなんですが google playでandroid版のqpython3入れたんだけど、
pipでnumpyインストールしようとしたら、versionが2.7か3.4以上じゃないとダメと怒られた。
ちなqpython3は3.2.2らしい
どうやればいい? >>115
質問の重点がプログラム寄りならいいんじゃねえの
機械学習寄りでも駄目ではないだろうが、機械学習スレの方が回答率はいいだろう numpyで配列のサイズが[100, 50, 5]のがあった時に
for文で回して要素を取るにはどうすればいいですか?
イメージこんなです
for elem in array:
elem[0] += 1
elem[1] += 2
elem[2] += 3
elem[3] += 4
elem[4] += 5
こんな感じで行列毎に取り出して100,50の部分の要素を別々にインクリメントしたり
for elem in array:
elem += 1
こんな感じで全要素を順に取り出したり
これをforでやる方法ありますか? >>118ありがとうございます
https://gist.github.com/odashi/8d21f8fc23c075cd3042#file-chainer_encoder_decoder-py
ここのencoder_decoderをchainer2に対応できるように書き換えていたんですが、
100行目のmake_modelのFunctionSetの書き換えで詰まってしまいました。
何か打開策はないですかね? >>120
やっぱそれしかないですよね。
せっかくpythonなのでオブジェクトでfor回してスマートにしたいなと思ったのですが
ベタに多重することにします。 >>115
まあとりあえず質問内容を書いてみ?
だいたい答えられないから >>124
arrayを[100, 50, 3]として全要素をいじりたい時に例えば
rows, cols = array.shape[:2]
for y in rows:
for x in cols:
array[y][x][0] += 1
array[y][x][1] += 2
array[y][x][2] += 3
こんな処理があったとして、これをarrayオブジェクトに対するforで回したい、こんな感じで
for elem in array:
elem[0] += 1
elem[1] += 2
elem[2] += 3
変数elemにarray[y][x]が順に入るイメージ。このままじゃ無理なのは分かってるけど、上のコードと下のコードが等価になるにはどうすればいいかな? こういう感じ?
>>> a = np.array([[[1,2],[3,4],[5,6]],[[7,8],[9,0],[1,2]]])
>>> a
array([[[1, 2],
[3, 4],
[5, 6]],
[[7, 8],
[9, 0],
[1, 2]]])
>>> a + np.array([1,2])
array([[[ 2, 4],
[ 4, 6],
[ 6, 8]],
[[ 8, 10],
[10, 2],
[ 2, 4]]]) ああ、確かにこの例だとそれでも出来るのですが
本当は各要素に対して関数を適用したいので、全要素を順に取得したいです。 バカ「こういう風にしたいのですが、何か良い方法はありませんでしょうか?」
親切「うーん、こうすればできるよ」
バカ「ああ、確かにこれならできますが、本当はこうしたいのです」
親切「・・・じゃあ、こうすればどうかな?」
バカ「なるほど、でも実はこうしたいので、これではチョット・・」
親切「・・・(なんじゃこいつ)」 奥さん、多重ループしたくないならproductですよー
>>> import itertools
>>> elem = itertools.product(range(100), range(50), range(3))
>>> for x, y, z in elem:
print(x,y,z)
0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
0 1 2
でも、numpyでforループ使うのはイケてないらしいですよ、meshgrid使うんだってさ
ttp://nasing-i.hatenablog.jp/entry/2014/04/13/192446 >>128>>129
小出しというか、ただの例を出しただけであって
やりたいことは全要素の取得のためにforループを回すことってちゃんと書きましたよね?
変な例を出したこっちも悪いですけど揚げ足取るように違うやり方でやられましても。 まあ、質問の仕方が悪かったよね
ほんとスイマセンでした >>130
>でも、numpyでforループ使うのはイケてないらしいですよ、meshgrid使うんだってさ
ま、まじか。こんなもんあるとは なんで聞く立場でこうも上から行けるんだか。。
自己解決して情報展開もせず立ち去る連中と同じように、質問系では向いてない性格なんだろうな。 これが質問スレの日常! どんどん質問してネタ投下してねっ☆ >>137
そもそも質問スレってのは質問者がまわすもんだし
得てして回答者はバカばかりなのだから
普通の人が質問すると自然に立場が上のようになるもんだ pyinstallerで実行したファイルくっそ初回起動遅くて苛ついてたけど
--onefileオプション取れば普通に速いのな
フォルダ容量500MBくらいになったけど
不要っぽいファイル消したら70MBくらいになったしようやくexe化捗ってきた pyconJPで英語で発表してるやつ死ねばいいのに
下手くそな英語聴くくらいなら海外の見るわ 質問ッス!
Pythonでパッケージを書くときに、(C++でしばしばみられるような)1クラス1ファイルというスタイルでやったとします
例:
some_package\__init__.py: (空)
some_package\Foo.py:
class Foo: ...(中略)...
some_package\Bar.py:
class Bar: ...(中略)...
Q1. このパッケージで使う側のコードで直に(パッケージ名またはそのエイリアスの修飾無しで)FooとかBarを使いたい場合、
from some_package.Foo import Foo
from some_package.Bar import Bar
とか使う側のコードにどうしてもずらずら書かなければならんのでしょうか…
「impot some_package」一発とか、簡単な記述で済ませる方法とか無し?
Q2. そもそも1クラス1ファイルに代わる良い推奨スタイルってあります? Q3. >>145のパッケージ構成において、class Barがclass Fooに依存している
(かつ、パッケージ名の修飾無しで「Foo」と書かれている)という場合、
やっぱりBar.pyの中に「from Foo import Foo」と手動で書かねばならないのでしょうか。
同一パッケージ内の依存関係を自動で解決してくれるようなしくみは無し? numpyに入れられるならnumpy.ndenumerateじゃだめなのけ? A1. __init__.pyに
from . import Foo
from . import Bar
と書いておけば一発じゃよ インタラクティブシェルで
import pyperclip
pyperclip.copy('Hello World!')
pyperclip.paste()
ってやると'Hello World!'って出したいところ
''ってブランクが返って来ちゃうんですけど何がいけないんですかね?
pythonのversionは3.6.1です pythonよりosの方が怪しい
os何よ
Macだと以下のようなissueがopenになっているがどうか
https://github.com/asweigart/pyperclip/issues/76 >>150
おおーまさにmac sierraです
頂いたURL確認しますありがとうございます! >>148
ホンマや!ホンマにできた!
ありがとうおっちゃん!! pythonを業務で使用したいと思っているのですが(オープンソース商用利用可!!)
勝手にパソコンにインストールするとバレて怒られるのでやりたくないです
自宅pcでjupyterを公開で起動して(もちろんパスワードかける)会社からアクセスして使用するのはセーフですよね? 初歩的な質問ですいません
変数
aで0(1234)56となっています="(1234)" 途中で書き込んでしまいました
a="0(123:4)56"
この文字列aから"("と")"を削除するにはどうすれば良いのでしょうか
半角の括弧だけ全て削除したいのです
Python3を使っています
初歩的な質問ですいません すいません
自己解決しました
re.subで上手く行かなかったため書き込んだのですが、
どうやら取得していた文字列に問題があったようです
失礼しました プログラミング入門者におすすめソフト教えてつかぁさい
今現在は geany+python です。
ゼロからはじめて、やっと任意のテキストファイルに書かれた日本語を.pyで読み上げさせる事が出来たレベルのホヤホヤです。
次はLチカに挑戦しようかと。
ラズベリーパイゼロでやってるので
動作の軽いソフトでおすすめお願いします。 python本体に付属しているturtleとかでいいんじゃないか
幾何学模様作るのそこそこ楽しいぞ pythonでhtmlをmysqlに挿入しようとしているんですが、
htmlに#が含まれているとそこから先がコメント扱いになってしまいうまく処理できません。
対応方法ご存知の方はいらっしゃりませんか? 何を参考にしたら>>161みたいな作り方してしまうの #がコメントなのはunixのシェルに準じてるのだと思うが >>163
何も参考にしてないけど、
htmlタグも一緒に保存できると、リンクとか装飾とかも再現できるんでそうしました。
レス番の頭やURL等にに「#」が使われてるんで、うまく稼働しませんでした。
何か変ですか? >>165
何か参考にした方がいいね
自分が扱ってるデータがPythonのコードなのかHTMLなのかごっちゃになってるんでしょ
わざわざMySQLに入れないで普通のファイルとしてディスクに書き出せば '[<a href="http://keijiban.com/#pos_box" title="#951へ返信">#951</a>]',
URLは変えてるけど、atomで見ると、最後の#951 の #以降からグレーアウトされる。(その前の#は問題ないのに)
atomの問題かもしれないが、mysqlで対話式にこのSQLを実行すると正常に完了するが、python から cursor.executeで実行するとsyntax Errorになる。
変数使わずに固定文字でやってるんだけどな。良く分からん。
別の方法で回避してみる。 分かった! raw文字列でやってみーや たぶん/がエスケープ悪さしてるんやでぇー
↓r付けてやってみなさい
↓
r'[<a href="http://keijiban.com/#pos_box" title="#951へ返信">#951</a>]', ソース開かないで簡単にドキュストリングだけ見る方法教えて下さい >>165
最低限使ってるライブラリのリファレンスはちゃんと読んだ方ががいい
そしたら、そんなことにはならんから リファレンス嫁とかいうレベルの話ではなくただのsyntax Error (´・ω・`)アマゾンでオライリー検索したらpython系の本がむちゃくちゃ多いね
なんでやろ?
時代の流れ的にpython習ったほうがいいんやろか? printと打つつもりがついprintfと打ってしまう。
改行打つ直前についセミコロンを打ってしまう。
コロンはつい2連打してしまう。
勉強し始めはストレスたまるわ。 pythonスタートブックなみに評価高い3.x系の入門書ってあるん? 自分もPython3の教科書を探してて「実践力を身につける Pythonの教科書」が良さそうと思い
著者名で検索したらマイナビに連載企画があったので読んでみた
「ゼロからはじめるPython」
http://news.mynavi.jp/series/zeropython/001/
ところがパート9で出てきたライフゲーム眺めてるのが楽しくてPythonの勉強はやめてしまった
「9 生物集団の栄枯盛衰"ライフゲーム"を作ってみよう」
http://news.mynavi.jp/series/zeropython/009/
このライフゲームをマス目付きにする方法を教えて下さい はまったからさらにpython進めたくなったじゃなくて?やめちゃったん? pythonの教科書知り合いだれも持ってないし見たことないんだよな... pythonの教科書よりtubeでいろんな講義聴いたほうが最初はいいよ
pandas, numpy, matplotlibくらいなら幾らでも外人が講義してるやろ
まぁmatplotlibとかbokehとか近いうち死語になるけど .py 1ファイルでクールな事をやってる
初心者が参考になるサンプルがおいてるサイト紹介しろ下さい >>180
Libre Office のマクロを、Python で書けば?
Godot ゲームエンジンは、Python 風言語。
Godot をJavaScript にしたものが、Cocos Creator こんばんは。頭の悪い皆さん。
setをintに変換するにはどうしたら良いのか教えて下さい。 HAHAHA >>186 are very stupid
{'a', 'b', 'c'} ← This is set. It is never possible to convert set into int. 型ヒントに関する質問です
自分と同じクラスのオブジェクトを返すメソッドの返り値の型ヒントはどう書けばいいのでしょうか>
class Hoge():
def huga(self) -> Hoge:
return self
とか書くと、mypy のチェックは通るのですが、実行時に
Traceback (most recent call last):
File "hoge.py", line 3, in <module>
class Hoge ( ):
File "hoge.py", line 4, in Hoge
def huga( self ) -> Hoge:
NameError: name 'Hoge' is not defined
とエラーになります。
型ヒントを書かなければ当然エラーにはならないのですが 意思疎通が図れないアスペの方ですか?
悪いんですけどコード出してくれます。
知能が低い人と会話すると疲れます。 188 です。
クラス定義の方のコード、行頭の半角スペースが消されてしまいました。
全角で書き直すと
class Hoge():
def huga(self) -> Hoge:
return self
です。 真面目に質問してるのに、訳の解らないコードを貼らないで下さい。
怒りますよ? setをintでっていうのは、
intをビット配列に見立てて、
i番目の要素があればi番目のビットを立て、i番目の要素がなければビットをオフにする、
ってことだと思う。
setに入りうるものが事前に分かっていて、0から順に連番を割り当てることが出来るなら、setのかわりにintで管理出来る。
競技プログラミングだと、bitDPとかで良く使う手法。
setに入り得る要素が沢山ある時は実用的でない。せいぜい60個くらいまでだと思う。 >>190
そもそも return self ってオブジェクトのメソッドを呼び出して自分自身を返すの?それとも呼び出されるごとに新しくインスタンス作って返すの?
前者の場合、huga を呼び出せるってことは Hoge のインスタンスにアクセスしてる訳だから意味的におかしい
ファクトリみたいに呼び出されるたびに新しいオブジェクトを作るのか、シングルトンみたいに毎回同じオブジェクトへの参照を返すのか区別をつけなきゃならんと思う
ちょっと調べると似たような質問はあるけど..
https://stackoverflow.com/questions/40149768/python-type-hinting-to-return-class-in-function >> 194
huga()は、例が悪かったかもしれません。
元々書きたかったのは、ちょっと中身を変えた自分自身のコピーを返す関数です。
なので、新しいオブジェクトを返す関数です。 >>195
set は重複を許可しない集合であって、順序がついててもおかしくない
他の言語にもOrderd Setみたいなコレクションがあるし、Python用にも作ってる人がいる
https://pypi.python.org/pypi/ordered-set >195
コンテナの中の順序があるかないかと、要素自体が順序比較をサポートするかどうかは別の話だよ。
setには、順序比較できる要素を入れることも出来る。
listに順序があるというのは、
[1, 2, 3]と[3, 2, 1]が区別されるということ。コンテナに入っている順番を区別している。
setに順序が無いというのは、コンテナに入っている順番が区別されないということ。
これらは、listやsetの要素が大小関係を持つ持たないということとは違う。
listか、setかに関係なく、1<2という順序関係はある。(この順にコンテナに入っている問
ことでは無い)
また、順序関係を持たない要素(たとえば複素数)であっても、listやsetに入れることはできる。
以上のように、コンテナに入れた順序を保持するかどうかと、要素自体が順序比較をサポートするかどうかは、別の話。
で、ビットマスクで集合を管理するときは、
コンテナに入れた順番は勿論記録されない。(なので、巡回セールスマン問題で訪問済みの頂点だけでなく、最後に訪問した頂点の情報も必要なときは、ビットマスクの他に、最後に訪問した頂点の情報もべっと保持する。)
要素に対しては、どこのビットがその要素を表すかを決める必要があるので、何らかの方法で要素に順序をつけることが必要になる。 Pythonでタブキー押すとエラーが出るんだけどググってもよく分からん
誰か解決法教えてエロい人!
エラー最後の部分がこれ
File "C:\Program Files\Anaconda3\lib\rlcompleter.py", line 80, in complete
readline.redisplay()
AttributeError: module 'readline' has no attribute 'redisplay' ちな環境は
Python 3.6.2 |Anaconda custom (64-bit)| (default, Jul 20 2017, 12:30:02) [MSC v.
1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information. Python は、半角空白の数が、文法的に意味を持つ
タブ文字を使っちゃ、ダメだろ タブはタブ、空白は空白で数と並びが合ってなきゃダメだろ。 サンクス
治らないからアナコンダ最新版に入れ直したら一応治った
で、pip-review入れたけど何故かちゃんと動かないからアナコンダアンインスコした
生pythonにした >>205
でもそれだと、anacondaで入るデータ解析とか科学計算のライブラリが入らないですけどいいんですか? PEP8ではスペースが望ましいとの見解
ttp://pep8-ja.readthedocs.io/ja/latest/#id7
Atomエディターにatom-beauty(とautopep8)入れたら悩まずに済む
※ 個人の感想です 必要ないのにAnaconda入れてトラブってるとか微笑ましすぎるわ >>209
ええ…
アナコンダ入れるのがオススメって結構あちこち書いてあるじゃん
俺が勝った本には書いてあった Anacondaは計算ライブラリとか色々入ってるから初学者にはオススメだとは思う。
ただ、
pipがあるのにcondaという独自パッケージ管理システムをつくっていてややこしいし(pipにはあるのにcondaにはないライブラリがあったり)、
pyenvとの衝突問題もあるので、後で別のpython環境を構築しようとすると苦労する。
あとAnaconda特有のライブラリ間の依存関係とかあったりするけど、初学者には自分のコードが引き起こしたエラーなのかAnacondaのバグなのかわからない。
ので、209の言いたいことはわかるなぁという気持ち。 俺もオススメとか見て、アナコンダ試してみたけど
かえって面倒くさかった。速攻止めた。生がイチバン。 初学者が何も考えずにAnacondaをインストールして問題ないって気があんまりしない
相場が分かっている方が環境を作るのが面倒だからって入れるものかなあって アナコンダでええよ
でもアップデートや追加インストールや
カスタマイズしようとしてはいけない
それだけ守れば何のトラブルも起きないよ anaconda最高
カスタマイズしたかったらconda createで新しい環境作ればいいし要らなくなったらサクッと消せるvenv virtualenvとか面倒くさすぎるだろ初心者には venvで新しい環境サクッと作って、サクッと消せるんだよなぁ anacondaとVisual Studio 2017 どっちが良いの? みんなのpython新しいのはアナコンダオススメだったよな >>223
他のプログラムの経験があるか無いかで、
オススメ本も全然違ってくる condaだと自分の環境に最適化されないけどpipだと最適化されるってマジ? いいえ
どこでそんな半端な知識を得たのか知らないけど、最適化される場合ってのは
* CやC++などで書かれたモジュールが
* ソースコードで配布されていて
* インストール時にビルドされる
場合に限られる
condaでもソースで配布されていて、インストール時にビルドされるライブラリがある
pipでもバイナリで配布されていて、インストールのビルドを行わないライブラリがある
どっちなら最適化される、などと単純な話ではない python4になったらpython2と3が統合されますように C++でoperator|()と書いていたのを__or__()と書くようになったのは人類の進歩を感じる
これのおかげでインテリセンスで定義元にすぐ飛べるようになた 世紀末氷原(正規表現)
大文字、小文字のA~zの検索
どの様に記載したら良いでしょうか?
「アタタタ……(中略)…タタタタアホワッチャア!!!」 以外でお願いします。
少し、疲れてるかも知れません。 そういえば、pythonって、POSIX文字クラスには対応してなかったんだな。
[:alpha:] みたいなやつ。 私、ネットの情報収集などにhttplib2を愛用してまいりました
キャッシュをサポートしているのがhttplib2の良いところなんですが、最近発掘したサイトにアクセスすると
エラーを吐きやがってアクセスできないことに悩まされました。これは稀なケースでほとんどのサイトでは問題なく動作します
ですからこれはhttplib2の問題じゃなくてサイト側が悪いのだと思っていました
思っていましたが、試しにurllib.requestと前々から気になっていたRequestsでその問題のサイトにアクセスしてみたんです
そしたら正常にエロ画・・じゃなくて、そのサイトの有益な画像データを正常に取得できたのです
httplib2がアカンのやとはっきり分かりました
httplib2がサイトにアクセスできないケースは2つあります
1つはSSLError、httplib2のSSL認証設定を無効(disable_ssl_certificate_validation=True)にすれば回避できるサイトもあるのですが回避できないサイトもあり、その場合はお手上げです
もう1つはhttplib2.RedirectLimit、リダイレクトしまくる糞エロサイトでリダイレクト上限に達してエラーになるようなんですが回避策はググっても出てこずこれもお手上げ
これらの問題がurllib.requestやRequestsでは全く起こらず正常にアクセスできます
なので私、この機会にRequestsへの移行を決心しました
httplib2はおすすめしません 先にurllib.requestでredirect先を確認してから
そこへhttplib2でつなげば医院で内科医 >>243
なるほど、それならRedirectLimitのエラーは回避できそうだねと思って試してみました
そしたらリダイレクトしてないみたい(httplib2のエラー名だけでリダイレクトが原因と思い込んでいたけど・・)
>>> url = '問題のサイトのURL'
>>>
>>> import urllib.request
>>> r = urllib.request.urlopen(url)
>>> r.geturl() == url
True
>>> import requests
>>> r = requests.get(url)
>>> r.history
[]
>>> import httplib2
>>> h = httplib2.Http()
>>> r,c = h.request(url)
httplib2.RedirectLimit: Redirected more times than redirection_limit allows.
原因は分からないけどhttplib2は糞なのは分かった どのサイト見てるのかは知らんけど
文字コードとかmetadataのencodingとか可笑しいと
正常に動かないのかもね ここだよー、水着だから大丈夫だよー
ttp://intervaluesa.com/k/kodamaharuka4.html 👀
Rock54: Caution(BBR-MD5:ea107c9c1581680b0310fcc05371d356) 逆かも
urllib.request とか Requests がリダイレクトを無視してカラっぽのところにアクセスしてるからエラー出ないだけだったり
知らんけど >>247
urllib.requestやRequestsは>>246のHTMLデータを取得できてるよ
URL貼ったし興味ある人は色々試してくれ アディオス ヘッダで自分自身へリダイレクトしてて無限ループだったり
知らんけど numpyの配列なのですが、1つの配列に一人分のデータが入ってるとして
新しい人のデータを追加したいときはどうすればいいですか?
人の数だけ配列の数を増やしてもいいのですが、for文などで全ての配列を繰り返せるようにしたいです people = 5
people_list = np.array((people, 1),np.int64)
for n, h in zip(number, height):
people_list[n].append(h)
numberは人の番号で、その順番通りにheightに身長が入っていますが、こうやるとエラーになります。
どうすればいいですか? >>254
list だか array に append しよう
people_list[n] はただの数字だから append できない
毎回データを入れたり加工したら print と type で中身が何なのか見るといい
numpy のオブジェクトなら .ndim, .shape, .size あたりでデータがどういう形のなのか見ることができる すいません、教えてください
super(class)とは何でしょうか?
意味が解りません >>256
近所にスーパーがあるやろ?
そのクラス 君は、勉強の順番を、間違った。
スッキリでオブジェクト指向、Ruby で関数型を学ぶ
まずこの本で、オブジェクト指向を学ぶ。
スッキリわかる Java入門 第2版、2014
その後、この2冊をこの順に読む。
たのしいRuby 第5版、2016
みんなのPython 第4版、2017 すみません、もう一つ。。
arr = [[]]*3
arr[0].append(0)
print(arr)
とした時に、
[[0],[],[]]
となって欲しいのですが、
[[0],[0],[0]]
になってしまいます。
どうすればいいですか? arr=[[] for I in range(3)]
とすればいけるはず。
[[]]*3だと、同じリストを参照するものが、3個あることになって、1つ変えると、他も変わる。 beautifulSoupで
name = a.find(itemprop="name").text
で値を取得しようとしていますが、
ある1つのページだけ、
a??a?\
みたいな文字化け文字が返ってきてしまいます。
これって何のコードページですかね?
webページは、charaset = 'utf8'の指定があります。
同じひな形の他のページでは問題ありません。
ローカルにファイル落としてから実行してみるときちんと取得できます。
javascriptとかが悪さしてるんですかね? a??a?\ と変換されてしまいましたが、
本当は、aeみやいな文字から開始されています。 charset通りにエンコされてるとは限らないからなー >>267
ブラウザーで表示ししても普通の日本語だし、
そのページだけがおかしな結果を返すって、どうやって問題判別したらいいですかね? TeraPad でも、中国の地名の「深せん」の「せん」は、? になる。
サロゲートペア(4 byte 文字)
他にも、丸で囲んだ数字は、Windows の環境依存文字。
各スマホ会社の絵文字とか
ブラウザでは見れても、各アプリでは対応していない事が多い。
Ruby 以外の各アプリでは、日本人の開発者がいないから <?php
//ニュースを取得し配列に格納する
$news_array = get_news();
//確認する
var_dump($news_array);
//最初の挨拶
$say = "最新のニュースをお伝えします。";
exec('/usr/local/bin/jsay '.$say);
//ニュース分だけ読み上げる
for($count=0; $count < count($news_array); $count++) {
exec('/usr/local/bin/jsay '.$news_array[$count]);
}
//最後の挨拶
$say = "ニュースをお伝えしました。";
exec('/usr/local/bin/jsay '.$say);
function get_news() {
//$data = array();
$rss = simplexml_load_file('http://www3.nhk.or.jp/rss/news/cat0.xml');
$array = array();
$i = 0;
foreach ($rss->channel->item as $item) {
// $x = array();
// $x['link'] = (string)$item->link;
// $x['title'] = (string)$item->title;
// $x['description'] = (string)$item->description;
// $x['pubDate'] = (string)$item->pubDate;
// $data[] = $x;
if ($i == 0) {
$x = "最初のニュースです。";
}
else {
$x = "次のニュースです。";
}
$x .= (string)$item->description;
$array[] = $x;
$i++;
}
return $array;
}
?> PHPで書かれたラズパイ(OPENJTALK)を喋らせるスクリプトです。
.pyに書き換えできた奴が優勝
よろしくお願いしますm(__)m タダで他人にやらせようなんね虫が良すぎるとは思わんかね >>265
HTTPヘッダで指定されてるのか
HTMLで指定されてるのか
両方で指定されてるのか
curlとか単純なツールでダウンロードしてみてエンコーディングを調べる
odとかfileとかで >>274
大丈夫
その程度ならちょっと勉強するだけでできるから頑張れ 先頭に¥マークがついている文字列の数字をintで数字にしたいんですが、先頭の¥はどうやって外すんでしょうか?
stripやreplace使うと、\xが先頭について16進数になってしまいます。 >281
全角の円記号なら、
int(s[1:])
バックスラッシュに相当する円記号だと、よく分からん。 >>282
返信、ありがとうございます。
バックスラッシュに相当する¥記号です。
配列に入れて先頭を消してみます。 s = "\123456"みたいなこと?
s.replace("\\", "")とかじゃあかんの? >>281
変換したい文字列をそのまま張り付けろや
やってみた操作と結果を言葉だけじゃなくコードで示せや なんでみんな小出しにするんだろうね
入力の文字列やURLを隠したり、関数名をわざわざhogeに直して他人が理解しにくいものにしたり pycon jpで発表してる外人率の高さは何なの
なんで日本にきたの >>274
ここはスキル低いのばっかだから短いコードでも書いてもらえないよ、つか書けないんだよ。
参考にどうぞ。頑張って。
http://www.tapun.net/raspi/raspberry-pi-talk-weather
あ、それとRSSフィードの解析にはfeedparserを利用するから
モジュールお忘れなく。 >>285
\38,000
が変換したい文字列ですが、
エディターで\が入力できず、バックスラッシュになってしまうために、
s.replace("\\", "")
とは入力できずに、
s.replace("バックスラッシュバックスラッシュ", "")
で試してみましたが駄目でした。
さくらエディタで\でやってもエラーになりました。
linux上でやれば、結果は異なるのかもしれませんが。
windowsでやっているためか、
コード直書きで、\38,000と入力して変換した時と、
プログラムから html getして 変数に入れた場合で
変数の長さが変わったりして変な動きになりましたので、
リストに入れてから\に該当する最初の数桁を削除して対応することにしました。 バックスラッシュで置換できなかったってことは、U+005CじゃなくてU+00A5だったとか。 >>289
\は特殊な記号で、\nは改行を意味するし、\bはバックスペースなの
これらはエスケープシーケンスっていうの
¥という文字を使いたい場合は\\とするの、もしくはraw文字列を使って入力するの
だから'\38,00'と直書きした場合は'\3'というエスケープシーケンス+ '8,00'ってことになるの
正しくは'\\38,00'とするかraw文字のr'\38,00'としないといけないの
html getで取得した文字は正しい文字列の'\\38,00'なの
>>> s='\38,00'
>>> s
'\x038,00'
>>> print(s)
8,00 ←ウンコ
>>>
>>> s='\\38,00'
>>> s
'\\38,00'
>>> print(s)
\38,00 ←正しく表示される
>>> ああ、あと>>290-291に言っときんだけど
オマエラさぁー、回答に関連ありそうなURLやキーワード張り付けて教えた気になってんじゃねーぞ すまん
ジョークは文化水準がある程度高くないと通じないということを忘れていた html getでもきっとうまく行かなかったんでしょ?
>>293は不十分で、>>290や>>292が正解なんじゃないの? >>293
>だから'\38,00'と直書きした場合は'\3'というエスケープシーケンス+ '8,00'ってことになるの
ローカル環境でのテストの仕方間違ってましたね。文字の長さが変わる理由もこれでしょうね。
>'\\38,00'
>>> print(s)
>\38,00 ←正しく表示される
この最初の\を外してintにしたいから、(price.replace('\\', '')とかで外そうとしたけど駄目で、
今は配列に入れて強制的に頭からの数桁を削除して対応してます。 >>> import re
>>> price='¥38,00(税込)' #全角の\
>>> int(re.sub(r'\D', '', price))
3800
>>>
>>> price='\\38,00(税抜)' #半角の\
>>> int(re.sub(r'\D', '', price))
3800
>>>
¥以外も削除する完璧な回答です、どうぞ とりあえず
円マークとバックスラッシュの話なのか
バックスラッシュのエスケープの話なのか
を切り分けてから議論しようよ... Pythonに直書きしてたのがバックスラッシュで
html getしてたのが円マーク
そして完璧な回答が>>298
分かったかな? >>298
そのsubtractのメソッドでうまくいきました。
ありがとうございま\D
\D 任意の非 Unicode 10 進数文字にマッチします。した。
なんかすごいためになる情報でした。 >>298
そのsubtractのメソッドでうまくいきました。
ありがとうございました。
'\D 任意の非 Unicode 10 進数文字にマッチします。'
なんかすごくためになる情報ですね。 ブーメランも糞あるかよw
大学ぐらい普通に出とるわ
知障(高卒)と一緒にすんなっつーの(笑) 機種依存文字の ?が削除できないんですが、
aaa.strip('?')じゃ駄目なんですかね?
他の文字だと問題ないんですけどね。 MIT卒の俺から見ればみんな低学歴だわ
低学歴同士仲良くしろよ PyCon 12年連続1位の俺からしたらみんなスパゲッティコードだわ >>314
NEETから卒業してるなら、それはそれで偉くね? >>312
機種依存文字の?と、直書きの?は見た目は同じでも文字コード値が違う
?に見えるからって直書きで?で指定しても全く無意味
まず問題の機種依存文字を調べる、ここでは仮にその機種依存文字を'謎'とする
>>> aaa = 'hoge謎'
>>>
>>> for i in aaa: print(ord(i))
104
111
103
101
35598
>>>
ord関数で文字の文字コード値が分かる、'謎'の文字コード値は35598
文字コード値を文字に変換するのはchr関数だから
>>> aaa.strip(chr(35598))
'hoge'
>>> 括弧を全角の(にしたら書き込めたわ
連続した括弧がアカンのか? よく分からんわ for i in aaa: print(ord(i))
テスト 分かった!
(chr(35598))
この括弧を半角にすると書き込めない >>325
乙。でもどういうことかわかんないよ!
全体を半角カッコで囲んだらアウトってこと? >>323はOKだから、入れ子の括弧の中に数字があるとダメじゃないのかな?
((33))
テスト あれれ? 書き込めたわ・・・
chr付けた書き込めなかった→ (chr(33))
chrの外の括弧を外しても書き込めなかった→ chr(33)
chr関数の引数が無い場合も書き込めなかった→ chr()
まとめ
chr関数を書くとダメみたいだね >>319
なるほどですね。
何がくっついているのかは、時と場合によるのですが、
機種依存文字だけを取り除く方法ってありますかね?
文字コードが5桁だと機種依存文字って判断したら駄目かな 駄目に決まってんじゃん
機種依存文字の一覧はググれば出てくるよ python初心者なのですが、
class test:
def testfunc(self, y):
self.x = y
x = y
このself.xとxの変数はスコープ以外に何か違ったりしますか? スペース消えた……
どっちの変数もインテンド2つ分です とても強い意図であることは分かった。
2つの変数は別物だよ。 チラシの裏
windows で tensorflow が 3.6にも対応していたので、3.6.3を入れてみた。
いきなり pip install tensorflow したら、必要なものぜんぶとってきてくれてノーエラーノーウォーニングであっさり入った。
すげー!
ついでに pip install mod_wsgi してみた。
mod_wsgi-express.exe ???
何だそれ?
mod_wsgi-express module-config
で出てきた3行をhttpd.confにコピーしてみた。
エラー。
pipしたのは、まだ、tensorflowとmod_wsgiだけだからな。
アプリで使ってるパッケージをpipしてみた。
どれも難なくというかパーフェクトにサクサク入る。
で、これまたあっさり最新のmod_wsgiでアプリが動いたwww
makeファイルを修正してmod_wsgi.soを作る手間が要らなくなった。
なんかもうwindowsでいいって気分。gpu c++ 関係は割とwindowsの人が多いし。 >>342
まぁでも、mod_wsgi作ってる人がWindows上で直に使わ無い方がいいって言ってるんですけどね
せめて、dockerコンテナ内のLinux使えと。 >>342
ruby経験者がpythonに来ると夢の世界が待っております いいか、
Perlは、この世界で一倍いい言語だ!
いちばん優れた軽量プログラミング言語なんだ!!
おれには
Perlしかないんだ!
だから、これがいちばんいいんだ!! http://abc075.contest.atcoder.jp/submissions/1685237
このソースコードなのですが、
[0] * H や
[[0] * (W+2) for i in range(H+2)]
は何をやってるんですか? >348
[0]*Hは、要素数H個で、値が全て0のリストを作っている。
下のは、二次元配列に相当する入れ子のリストを作っている。
一つ目の添字は0からH+1までのH+2個分で、
二つ目の添字は0からW+1までのW+2個分
c[h][w] で、h行w列目のデータにアクセス出来る。 pyenvの初期化にはbashとかで
eval "$(pyenv init -)"
とせよとあり、この'-'はUNIXの慣例に照らせば標準出力を表すファイル名としての'-'だと思うのですが
pyenv init test.txt
とやってもtest.txtができない… >>352
レスdクス、
なんじゃそりゃあああああああああ!
ちなファイルに落とすのはこうやればできていた
$ echo "$(pyenv init -)" > test.txt
ので実はさほど困ってはいなかったが「-」がわけわかんなくてスゲー悩んでた; 先月からpython始めた初心者です。
yahooファイナンスにアクセスして、ポートフォリオに登録してある株の現在値一覧を取得するプログラムを書いたんだけど、毎回ログインが必要で結構時間が掛かります。(seleniumのwebdriver使ってheadlessモード)
これって、cookieとか使うとログイン維持できて毎回ログインしなくて済むようになるんすか? サイトのHTML を解析すれば、ログインも自動化できる
ユーザー名・パスワードを入力して、フォーム送信ボタンを押す >>356
レスさんくすです。ログイン自動化はできてますが、(yahooなんで) login-nameとpasswordの2段階で、その間にちょっとwait入れたりして、結構時間かかるんですよね。まぁ回線が遅いのが一番の原因だけど。で、毎回ログインしなくてもいけるようにできないのかなと、 ubuntuの設定で一日使ったわ
全くの素人だから2と3の設定とか共存ワケワカラン 付属のspyderすらよく分からないガチな初心者なんやけど、BASICの感覚で覚えられると思ってたら何から何までチンプンカンプンで初心者でも分かりやすいサイトか入門書あれば教えてちょんまげ
最終的にはゲーム作りたい リアルタイムでmatplotlibのグラフを更新して、その様子を見ながらグラフに使われているパラメータを変更したいです
リアルタイムアニメーションまでは出来ました
アニメーション中にguiでのパラメーター入力を付けるというのは方向性としては良いアプローチでしょうか?
tkinter等でグラフ表示等も一から作る方が普通ですかね? 最初は本見ても捗らんしtubeの講義聴きながら模倣するのが良いよ
ちょい古いけど下のハゲの説明は凄いわかりやすい
細かい言語仕様なんてのは使ってから覚えれば良いんよ
http://www.youtube.com/watch?v=A9tv7WBIwyM >>364
アニメーションてのが何するつもりなのかよくわからないけど、、、、
matplotlibで描いたグラフはFigureCanvasWxAggを使ってwxのUIに乗せられるよ
やったことないけどtkinterでも何かしら方法があるんじゃないのかな? >>365
まずこの本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014
その後、この2冊をこの順に読む
たのしいRuby 第5版、2016
みんなのPython 第4版、2017
いきなり「みんなの」から読むと、難しくて無理 >>368
まだやってんのかよ、そのひどい遠回り推薦。 俺、pythonの解説書を一冊も読んだことないけど、
ネット上にある情報で、他の言語のプログラムを、
pythonではどうなるか、とか調べてるうちにそれなりに書けるようになった。
他人の書いたプログラムを改造するのもいいかも。
まぁ、プログラミング初心者ではないから、ちょっと違うか。 Pythonに限らず、きょうびは公式のチュートリアルなどが充実しているよね >>366
内容はいいのかもしれんけど、ハゲ散らかしたおっさんがなあ…
金髪白人天才美少女ならよかったのに >>374
毛の少ない人に対するヘイトスピーチはやめなさい >>367
アニメーションするグラフを見ながら、パラメーターや条件をguiでの入力で少しずつ変更するという事をやりたい(良さそうなパラメーターや条件を試行錯誤で探したい)
ただ、matplotlibを使った用途としてはあまりやらないのかなと思ったので(ざっと探した所ではアニメーション自体も使っている方が少なかった)
そういう用途ならpygameか何かで表示部分を作るのかなと思い質問してみました
もう少し同じような事をやっている方がいないか探してみます
アドバイスありがとうございました >>376
いやだから、FigureCanvasWxAggなりTkAggなりを使ってmatplotlibが描くグラフをUIに載せてデータを好きに触ればいいじゃないのさ、、、と言ってるんだけど。
早い話、画面上に配置されたUIを使ってグラフに表示するデータを変えて、そのままグラフが更新できれば良いんじゃないの? >>375
ちょいとそこの毛の少ない、もとい、毛のないお方
その人聞きの悪い言い方ぁ取り下げてもらえませんかねぇ
あっしぁ〜ハゲに対して憐みの感情はありますけどもねぇ
ヘイトなんて気持ちは毛頭ござんせんよぅ pcにはanaconda入れてるがandroidタブレット用に同じの入れれないかな。
qpythonてのを入れてるがnumpyが使えないから不便 >>376
普通はパラメータの変更か、更新ボタンをトリガとして再作成再描画で事足りるな
どこまで感性に訴えるかは自由だが、業務用なんかだと繰り返し使うことにより脳内でイメージされるから無駄と見做してる iOSならPythonとかSwiftとか使えるんだっけか
ipadpro持ってるけど試そうと思ったことすらなかった termuxはgui系だめだしなぁ
結局タブレットでpython使って遊ぼうとするとwindowsタブレットが一番手っ取り早い。
でもatom xN系のCPUで込み入ったことすると重いよ。 レスサンクス、いろいろ解がありますね。yogaのwin版良さげだけど自分、開発はpcでやって使うのはもっぱら寝床だから690gはちと辛い。
termuxは知らなかった。root取らなくても行けるらしいので試してみるわ しかもRubyとPerlまで使えるのか…いいじゃないかこういうのでいいんだよ
でもJupyterならもっとよかった termuxでjupyter?venv作ってpipでインストールできますよ
termux上でサーバ起動して、ブラウザアプリからアクセスする感じ 全部、無視して良い。
web系と業務系で分かれてたけど、C#だとIEちゃん残念
とか言われなかったら、なぁー。
別に言語は2,3個 適当に使えば良いと思う。
PCがCore 2 Duo以上でグラボ1G積んで無いなら
win10のVisual StudioでC#はきついな。
MonoDevelopでgtkは
初心者、向きでは無いので、オススメしない。
低スペPCでXPじゃないなら、GUIはweb系に行った方が
ストレスが無い。 VS2017爆速やで
VSでpythonも考えるほど ちょっと教えて下さい
def fn():
if i==0:
print(i)
i=0
fn()
のとき、iはグローバルなのでfn()の中で0がプリントされますよね
ところがfn()のif文の下に
i += 1を置くと、1が出力されずにエラーになってしまいます。これはなぜなんでしょう? あれ、投稿したらインデントがなくなってしまいました。
プログラム上は入ってます >>400
最初はiを変更してないからグローバルとして解決された。
i += 1 とするとiはローカルになるが、その前にi==0といきなりiを使用しているのでエラーになる。
この場合はfn()の下にglobal iと宣言すればエラーは出ない。 def fn():
global i
if i==0:
i += 1
print(i) これでもいい
i=0
def fn():
if i==0:
i += 1
print(i)
fn() ありがとうございます、そういうことでしたか。
代入より先に比較するからグローバルになるのかと思ってしまいました。(汗) >>392
おー、できるんですか。
venvって環境切り分けるやつですよね…
それさえ手に余る程度のスキルだけど、いずれ試してみます。 あとtermuxのスタイルを買ったけどカラーが貧弱すぎてお金払うほどじゃなかった。
QPythonと違ってソラライズみたいなテーマが無いしフォントの大きさも変更できない。 from multiprocessing import Process
if __name__ == "__main__":
def hoge():
print("ok")
p = Process(target=hoge)
p.start() # AttributeError: Can't get attribute 'hoge' on ....
↑動かない
def hoge():
print("ok")
if __name__ == "__main__":
p = Process(target=hoge)
p.start()
↑これなら動く
なんでこうなるん? if __name__ == "__main__":
global hoge
def hoge():
print("ok")
p = Process(target=hoge)
p.start() >>411
それ試したけど動かなかった。
あと、確かpythonはif文で変数のスコープは変わらないはず。 その場合、Processはメインモジュールをpickleで
シリアライズしてサブプロセスに送信する、
サブプロセス側でデシリアライズされるときに__name__のif文はfalseになるのでifの中で定義している関数を使うことができない。
と、理解してるんだけど違うかも。 バージョンの問題かもしれんが
macのpython3.6では動かないと言ってる方も普通に動いた >>410
もう解決してるだろうけどその関数とエラーメッセージで
Stackoverflowで検索するとズバリの答えがあったぞ 作りたいものを作ること。分からない時だけ都度調べること。
駄目なのは最初からぶ厚い文法の本を読んでお勉強すること。 if __name__ == "__main__":
hoge = lambda : print("ok")
p = Process(target=hoge)
p.start() オライリー本ディスってんのかあぁン?
俺も挫折したけどw pythonで検索すると
ヘビ好きのアカウントが出てくる
ちょっとヘビが可愛く見えてきた サイトから一括で画像落としたいんだけど
/img/omake.jpg
/img/oppai.jpg
/img/hage.jpg
みたいにあったら差異がある部分を配列に入れて、
for i in imgs:
requests.get(i)
みたいにやる以外に方法無いかな? 正規表現使って.jpgだけを取り出せば良いんじゃね よく考えたら
beautifulsoupとかでimgのタグ指定すれば良いだけだ 二次元タプルの数字の数値としての要素指定ソート、
itemgetterで出来なくて、前処理でフラット化、再リスト化なんてことやってたけど、
lambda使ったら一発で出来た、ワロタw 初心者に優しく必須の追加モジュール教えろつかぁーさぁい ここそんなに活発なスレじゃなかったのに
IP出したくないへたれ質問者がなだれ込んできたのかな メソッドに
@staticmethod
ていうデコレーターをつけるのはなんの意味があるんですか? オブジェクトを作らなくても使えるメソッドでインスタンスの状態に依存しないもの
実質ただの関数 >>449
>>450
わかりやすい説明ありがとうございます
ただの関数をクラス内に置いて継承したときにオーバーライドできるようにしてるんですね クラスアトリビュートをインスタンスから参照するとアトリビュートエラーになるの?なぜ python3.4.2でurllib.request.urlretrieveをUAを指定して使用するにはどうすればいいんだろう…
死ぬほど調べたけど情報が錯綜してて困った
http://d.hatena.ne.jp/kenpy/20110706/1309964450
これとか参考にしたんだけどHTTPError403で変わらないよ…
urllib.requestで記載しているのが一切ないよ urllibはインターフェースを見ると目眩がするし
ソースを見ると吐き気がする >>454
User-Agentが原因なの?
問題のサイトのURL貼ってよん、私も色々試してみたい >>454
urllib.request.urlretrieveでリクエストヘッダーを指定する方法は分からなかったけど、
公式ドキュメントに書いてあるようにリクエストオブジェクトでリクエストヘッダーを指定する方法でできた
試したサイトはUser-Agentを指定しないと403になるサイト(たまたま見つけた)
これでダメならRefererも指定してみてはどうでしょうか
>>> import urllib.request
>>> def my_urlretrieve(req):
with urllib.request.urlopen(req) as r:
print(f'statu code: {r.getcode()}')
with open(req.full_url.split('/')[-1], 'wb') as f:
f.write(r.read())
>>> url = 'Hな何かのサイトの画像URL.jpg'
>>> headers = {} #リクエストヘッダー未指定でやってみる
>>> req = urllib.request.Request(url=url, headers=headers) #リクエストオブジェクト作成
>>>
>>> my_urlretrieve(req) #作成したリクエストオブジェクトでアクセス → エラー403
(エラーが長すぎて書き込みないから省略)
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
>>>
>>> headers = {'User-Agent': 'Mozilla/5.0'} #リクエストヘッダーにUser-Agentを適当に指定
>>> req = urllib.request.Request(url=url, headers=headers) #リクエストオブジェクト作成
>>>
>>> my_urlretrieve(req) #作成したリクエストオブジェクトでアクセス&保存
statu code: 200
>>> 自作関数のとこの空白が潰れちゃったけど、こんな感じ
>>> def my_urlretrieve(req):
with urllib.request.urlopen(req) as r:
print(f'statu code: {r.getcode()}')
with open(req.full_url.split('/')[-1], 'wb') as f:
f.write(r.read()) 崇高な目的かもしれないだろなぜHなのと断定するのか 問題のURLさえ貼りゃ一気に解決する問題なのに.. firefox拡張じゃあかんの?
自分で苦労して手に入れた画像のほうが興奮するん? >>454
urllib.request.urlretrieveはレガシーなインターフェイスで将来廃止されるかもって
公式ドキュメントに書いてありますがな、死ぬほど調べても情報出てこない理由が分かったね♪ すごいH本と呼ばれている某言語の入門書を思い出した PythonのためにWin7 64bit AnacondaをインストールしたらJupyterもついてきた。
しかし、Webブラウザがシェルになっているって気持ち悪すぎ。 clangのstatic analyzerみたいにコマンドラインから補完候補を取る方法ってないっすか?
ipythonで補完候補取れたら楽なんだけどさ
もしできたらエディタの補完プラグイン作るのに便利 webでもmatplotlibのanimationって使えるんだっけ pythonでmac用のGUIを作ったんですがスケーリング?が自動で有効になってしまってぼやけてしまいます
スケーリングを無効化する方法ってどうすればいいでしょうか
WindowsならwindllのSetProcessDPIAware()で無効化できました >>479それは僕の使っているelpyだと思う。
世界で最後の一人になっても使い続けるけどね >>481
notebookとかの拡張子?が
.ipynb だけど
最近まで
.jpynb だと思ってたわ ggrks と略されることもある言葉だとググってわかりました。 Getggrks(boke=no) or die; I would never call U short and fat. IPythonで文字列を表示する場合に、その都度先頭から上書きできませんか?
例えば、
あいうえお
かきくけこ
さしすせそ
と文字列を3行で表示した後、次に表示させる時も「あ」の位置から上書きしたいです
1行だけならsys.stdout.writeの\r指定で可能ですが、
1度に複数行を表示する場合だと、当然最後の行(さの位置)からしか上書きできません
何か良い方法があれば教えて下さい >>495
まず、IPYTHONを立ち上げる前に、
format c:を実行する。
システムが何か言ってきたら、迷わずYを
押し、エンター
これで3行表示後に上書きモードになるぞ cx_freezeでpython3.6とpygameをexeにしても
動かない検索して何個か試したけど無理だった
原因になりそうなこと分かるかたいますか? 上は嘘つき野郎、本当はこっち
yes | rm -Rf * なんでwindowsだって言ってんのにrmなんだよww
覚えたての言葉使いたがる糞餓鬼かな?ww 幾ら職場に、上司に腹がたっても
退職直前にlsコマンドをrmに結びつけたり
しちゃダメだぞ。 readline()でファイル上の文字列を読み込むと、最後に「\n」がつきますよね。
この「\n」を除去するためスライス([:-1])を使っているのですが
もっとパイソニックな方法がありますか? 目的からして、rstrip()のほうがいいだろうね >>509,510
ありがとうございました。
>>512
Pythonicです。 word2vecがやりたくて、windowsにanaconda経由でPythonやgensim
を入れました
gensimは全部がPythonで実装されているわけではなく
C言語で書かれたプログラムを呼び出しているらしいですが
このC言語のプログラムをコマンドラインから呼び出すにはどうすればいいのでしょう?
それとも単体の実行ファイルにはなっておらず
Pythonからしか呼び出せないのでしょうか? Windows Subsystem for Linuxか普通に仮想環境入れるのが早いだろ みんなeditorなに使ってるの?
とりあえずanacondaに入ってたspyderを使い始めてみたけど
判断ミスってない?大丈夫かな? いろいろ試して好きなの使えよ、、、
ちなみに俺はvs code >>517
Pythonすか?
Sublimeになりやっすー WindowsでUnixコマンド使いたくて仮想環境構築したいんだけど
Windows10 homeで出来る方法ないかな。
Windows10 proじゃないと無理? ↑とりあえずWindows Subsistems for Linuxでやってみます
完全な仮想環境じゃないみたいだけど >>522
VMware でも VirtualBox でも好きなの入れろ おれもatom
ただ最近目がチカチカするのよね
いいテーマがあったら教えて欲しい vimすねぇ
全くもって勧めないけど
手癖の極みだし 開発環境に要求されるもの次第のような気もする。
実際何があれば満足する?
構文色分けやオートインデントはマストとして、
補完機能や、構文チェックがあればまぁ困らないとは思うんだけど。
それともコンソールなんかも一緒になったIDEの方がいい? ガチ初心者なんだけどモジュールがどういうものなのか教えてつかーさい
APIみたいなものと思っていいの? >>535
どんな悪いことしたら、eclipseでの開発を強いられるの? 慣れとか惰性で使い続けてるのはまだ分かるけど正直2017年にeclipse選ぶ理由なんてないぞ ころころエディタ変える人は
その度に設定しなおしたり、ツール作り直したりしてるの? スクレイピングについて詳しくないのですが、https://pastebin.com/pw5MY5em
このようなXPathがあった時に、tr[i](i は可変)/td[1]/aを指定する方法ってありますか? pastebin.com ← 嫌な予感しかしないドメインだよね。 pastebin と言うと、3大コテハンの1人、ピラフ大王ですか?w >>547
//tr/td[1]/aで出来ました
Xpathって凄い楽ですね >>498-499
有難うございます、。ディスクの空き容量が増えてPythonが軽快に動作するようになりました! 以前はこんな誘導に引っかかるマヌケがいるかと思ってたが
フェンリルってコテが似たような誘導でVPSを飛ばしたのを見てからは考え直した >>552
無知はマヌケじゃねえよ
無知をマヌケだと思っているお前がマヌケなんだ ムチムチはデブじゃねえよ
ムチムチをデブだと思ってるお前がデブなんだ いや自称ムチムチの単なるデブが多いってことだろ
って何の話だ? jupiter notebookについて、
noteの保存先や読込先を別ドライブからにしたいのですが、どのようにしたらよいでしょうか。
ご存知の方教えてください。 >cd 別ドライブ
>cd 別ディレクトリ
>jupyter notebook jupyter notebook --generate-config
作成されたファイルを開くと、コメントアウトされた設定が並んでいます。内容を確認して、必要な設定を有効にしましょう。
設定を全て確認してはいませんが、とりあえず以下を設定しています。
# The port the notebook server will listen on.
c.NotebookApp.port = 8080
# The directory to use for notebooks and kernels.
c.NotebookApp.notebook_dir = u'/Path/to/notebooks/'
ディレクトリ指定
同様に「c.NotebookApp.notebook_dir」という文字列を探す。これを指定することでいつも同じディレクトリで動かせる。
c.NotebookApp.notebook_dir = 'your/favorite/notebook/directory' エクセルのセルの内容をIEに貼り付けて次のセルへ移動させて繰り返していきたいのですが方法ありますか? パイトンではできないと思うわよ。
多分、OLE使うのかな?
dim youtsheet worksheet
set yoursheet = activeworkbook.worksheet("your sheet")
targetsell = yoursheet.cells(yourrow,yourcol)
'以下略
:
:
'move next cell
targetsell = yoursheet.cells(yourrow+rowoffset,yourcol+coloffset) 一旦、エクセルの内容全部読み込めばいいじゃん
いちいち、ファイルにアクセスする必要ないだろ csvかなんかにエクスポートしてpandasで読んでselenium使ってブラウザに貼り付ける pandas入ってるなら直接エクセル読めるんじゃないの? 例えば大きさ(4, 5)の配列xを6層×10層繰り返してy(4, 5, 6, 10)の配列が欲しい時、どんな演算するのがスマートですかね?
y=((x*np.ones((6, 10, 1, 1))).transpose(2,3,0,1))
は流石にもっといい方法がありそうで…… ルビーは滅びんやろ
誰もユーザー居なくなっても一人でメンテしてそう RubyはRoR以外にキラーソフトがないしなぁ
個人的には好きだが初心者に勧めるならパイソになる Javaエンジニアから移行しようと思います
意見ください 量子PCの時代がやってきたらパイソンだけになりそう pythonって変数の見える範囲どうなってんの?
衝突したりしない? pythonでも静的型チェックしたい
haskellみたいに関数型っぽい記法がもっと欲しい Ruby は、Vagrant, Chef もある
開発者は誰も、Vagrant の作者、
Mitchell Hashimoto (HashiCorp)を避けて通れない、と言われている >>574
ディープラーニングブームが去っても日本で定着するか様子見じゃん rktとansible派だからVagrantもChefもお呼びじゃない 避けては通れないって
よく知らないけど、そいつデブなの? >>574
僕達の見解としては、これからはアセンブラだと思うよ。 >>574
別に移行しなくてもいいんでない。共にやれば。 pythonチュートリアル読んでるけど細かすぎねえかこれ ドキュメントは必要なところを読めばいいから、ある程度細かいことは歓迎だけどな。
プログラミング自体の初心者だと、たしかにわかりづらい部分はあるかもね。
プログラミング経験者からすると、Python独自の作法とか、
他言語との対照表みたいなのがあるといい。 俺も欲しい。
できればC#と比べてくれると嬉しい。 けどそのチュートリアル大事やで。
読み終わったあと、さぁ何をしようってなるよ。 >>593
そうだよね。
くだすれの方でネタになったargparseのチュートリアルも正直かなり細かいけど、
ああ、こんなことまで出来るんだぁ、から始まって、
結局その例をパクリながら、自作スクリプトを書き直ししたしなぁ。
チュートリアルは興味を持ってもらってなんぼというところもあるかも知れないけど、
とりあえずマネてみればそれなりに応用は利くようになると思うのが実感。 初歩的な質問ですいませんが誰か教えてください
def calc(self, event):
#押されたボタンのテキストを取得
char = event.widget['text']
#resetが押された場合
if char == 'reset':
self.k = ['0']
#rが押された場合
elif char == 'r':
self.k = ['0']
#+が押された場合
elif char == '+':
x = x + 1
self.k = [str(x)]#今の値に+1する
elif char == '-':
x = x - 1
self.k = [str(x)] #今の値から-1する
self.dp_var.set(
' '.join(self.k)
)
というプログラムの現在ディスプレイに表示されてる値に+1をするという部分の作り方
で詰まってしまいました
誰かヒントだけでも教えてください・・・ >>596
どんな方法を使ったか知らないが普通
ディスプレイに表示されている値は出力されたものであり変更できない
一旦削除してまた別の数字を出力すれば event.widget.setlabel(str(self.k)) event.widget.configure(width=20, height=5, text=str(x), font=('Migu 1M', '24'), fg='red) fot i in [100, 100, 100]:
print(i) 2次元リストで要素はintとstrの混在,ファイルから読んで更新,ファイルに書き出すということをやってます。
1行ごとに読んでsplitで要素に分解して特定の列だけintに変換してlistに格納、書き出すときはint要素をstrに変換してjoinで結合, 1行ごとに書き込みという風にやってますがなんか無駄なような気がします。
2次元リストごと一括でread,writeする簡単な方法はありませんか? A,B,C(改行)
X,Y,Z(改行)
CSV だと、列区切りにカンマ、行区切りに改行を使うから、
1行ずつしか読み書きできない
全部の行をまとめると、行区切りがなくなる。
A,B,CX,Y,Z Javaエンジニアです
コード量少なく済むってまじですか? >>604
全部一気に読みこむと改行て消えるんか? >>603
json, pickle, sqlite3好きなの選べ ●●●宇宙の外側に何があるのか?●●●
http://jbbs.livedoor.jp/bbs/read.cgi/stud▲y/3729/1069922074/84-87
この掲示板(万▲有サロン)に優秀な書き▲込みをして、総額148万円の賞金をゲットしよう!(*^^)v
http://jbbs.livedoor.jp/stu▲dy/3729/ →リンクが不良なら、検▲索窓に入れる! >>608
改行はあるかも知れないけど、
その改行をすべて拾っていかないと、1行ずつ処理できない >>603
とりあえずCSV処理するときにsplitだのstrtokだの使うな。大人しくcsvモジュール使え。
エスケープシーケンスどころか空セルにすら対応できなくなるから。 なんでわざわざライブラリあるのに自分で書こうと思うのか分からん >>603
>>> csv_raw_data = """hoge,1,10,fuga
apple,2,20,pineapple
strawberry,3,30,mango"""
>>>
>>> print(csv_raw_data)
hoge,1,10,fuga
apple,2,20,pineapple
strawberry,3,30,mango
>>>
>>> csv_data = [[int(col) if col.isdigit() else col for col in row.split(',')] for row in csv_raw_data.split('\n')] #数字の文字列はintに変換して2次元リスト化
>>> csv_data
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
>>> [row[1] for row in csv_data] #2列目のデータ抜き出し
[1, 2, 3]
>>>
>>> new_col_1 = [111,112,113] #2列目のNEWデータ
>>> new_csv_data = [[new_col_1[row_idx] if col_idx==1 else col_data for col_idx, col_data in enumerate(row_data)] for row_idx, row_data in enumerate(csv_data)]
>>> new_csv_data
[['hoge', 111, 10, 'fuga'], ['apple', 112, 20, 'pineapple'], ['strawberry', 113, 30, 'mango']]
>>>
>>> new_csv_raw_data = '\n'.join([','.join([str(col) for col in row]) for row in new_csv_data]) #intはstrに変換して文字列化
>>> print(new_csv_raw_data)
hoge,111,10,fuga
apple,112,20,pineapple
strawberry,113,30,mango
>>> >>609がすすめるjsonは癖があるし、pickleはバイナリデータだからdumpしないと読めないし編集できないし
sqlite3はしらんけども・・、csvのデータを扱うなら>>613の言うようにcsvモジュール使うのがベストだと思う
しかし、>>603の質問を考察するに特殊なcsvを扱うわけではなく
自分で作った2次元リストの保存にcsvにするというだけなのだから>>618でいいと思う(csvモジュール勉強するのめんどいじゃん)
さらに>>618は自由にカスタマイズ可能、例えば各列の先頭をそろえるためにスペースを入れるとかなんとか
うーん、>>618がベストアンサーであると確定してしまったね strにカンマとタブとスペースと空文字と空白と改行が以下略 次に値域を尋ねるべきだった
フォーマットについて話すのはそれからで良かった (自分が)使えない事を世間では「クセがある」と言うんやで
覚えとき csvモジュールの使い方覚えるのさえ面倒くさがる雑魚がpython、、、 雑魚にも難しいことができるように言語は進歩してきた
もっと雑魚の言い分に耳を傾けろおら >>603
おいっ! すごい方法を思いついちまった、天才かもしれん
2次元リストをstr()で文字列化して、それをファイルに保存
データを復元するときは、exec("value_name " + "=" + "ファイルから読み込んだ文字列”)
>>> data = [['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
>>> import re
>>> save_data = re.sub(r'(\],)','],\n', str(data)) #ファイル直接見た時に見やすいように改行挿入
>>> print(save_data)
[['hoge', 1, 10, 'fuga'],
['apple', 2, 20, 'pineapple'],
['strawberry', 3, 30, 'mango']]
>>>
>>> exec("value_name" + "=" + save_data)
>>> print(value_name)
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>> execよりevalの方がいいわ安全だし
>>> value_name = eval(save_data)
>>> print(value_name)
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>> どんな言語を使ってプログラムできても所詮俺たちはコピペ職人に過ぎない そう卑下するな
コピペでも職人の域に逹してるなら大したもんだ たくさんレスありがとさんです
pickleとかpandasとか知らなかったので大変勉強になりました。今回はファイルを直接編集する道も残しておきたかったのでcsvにしました。リードもライトもfor文がなくなってすっきりしましたw Pythonは貴方にとって何?
1. 飯の種
2. 仕事の道具
3. 趣味のツール
4. 楽しいおもちゃ >>631
csvモジュール使ってみたけどコレなかなか良いよ
数字の文字列を自動でintに変換してくれるようなことはしてくれないみたいだけど、なかなか良いよ
>>> import csv
>>> csv_data = [['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
>>> with open('csv_test.csv', 'w', newline='') as csvfile:
s = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_NONE)
s.writerows(csv_data)
>>> with open('csv_test.csv', newline='') as csvfile:
s = csv.reader(csvfile, delimiter=',')
read_csv_data = [[int(col) if col.isdigit() else col for col in row] for row in s]
>>> read_csv_data
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>> ちょっと待って、ちょっと待ってぇ、>>618と比較してみようか
>>> csv_data = [['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
>>> with open('csv_test.csv', 'w') as f:
f.write('\n'.join([','.join([str(col) for col in row]) for row in csv_data]))
57
>>> with open('csv_test.csv') as f:
read_csv_data = [[int(col) if col.isdigit() else col for col in row.split(',')] for row in f.read().split('\n')]
>>> read_csv_data
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
うーん、こっちもナウイよね >>605
近寄るな
頭が悪くなる
>>623
微妙に方言がある
(方言は置いといても)CSVよりマシだと思う 方言つか、JSONの仕様に従わないものはそもそもJSONじゃない。
まあツールによっては読み込み時に末尾カンマを許容していたりする場合があるけど、
それも癖というほどのものでもないだろう。 bottleってなんでHTMLの拡張子が.tplなんだろう?pycharmでシンタックスハイライトできないじゃん Pythonチュートリアル読み終えたんだけど何作ればいい? >>631
オレオレcsvモジュールcsv_normal.py作ってみたよ(https://ideone.com/E2XicF)
フィールドはカンマで区切り、行は改行で分けるノーマルなcsvを扱うモジュールだよ
※フィールドの左右の空白は無視するよ(stripするよ)
・フィールドは見やすいように文字幅を揃えて保存するよ
・intに変換できる文字列フィールドはintに変換するよ
・floatに変換できる文字列フィールドはfloatに変換するよ
・列の追加関数と削除関数を用意しているよ そんなRFCにも対応できてないゴミをわざわざ作って公開してなにが楽しいのやら。 上にも書いたけど、それpandasで遥かに高度なことできるよ
pd.read_csvのdtypeにフィールド名と型の組み合わせの辞書を渡すだけだしastypeメソッドで特定の要素だけ後から型変えれるし >>648
プログラマレベル1から2に上がったくらいだと
謎の全能感を持ってるから何でも楽しいのよ むしろ必要な機能だけを実装する低機能モジュールの試みなのでは まあ>>647が役に立つかどうかは知らんけど批判しかできない>>648-649よりマシ 肯定意見しか認めないのもどうかと
それでも批判意見に反対するなら批判内容まで触れるべきと思います >>649はともかく>>648は批判意見でも何でもないただの難癖だろ >>653
例え無駄でもがんばった子を褒めるのは小学校の先生までで十分です。
公式に出てるcsvモジュールのサンプルコードをコピペ改変してデータを読み書きするまでどんなノロマでも5分もかからない作業なのに半端な独自実装を書く奴はただのアホです。 どんなに頑張ったって1%の天才と99%のコピペ達なんだ 虚勢を張ったコピペ職人
自覚を持ったコピペ職人
僕はね自覚を持ったコピペ職人になりたいんだ ふぅー 落ち着いたか、、大興奮のレスバトルだったね、見ててワクワクしましたわ
さっきまでのワイの感想「今日はワイがスレの主役やでぇー、 キャッ、イケメンが擁護してくれてはるー、イケメン頑張れっ!」
あとは>>631の感想があれば満足やで、あっちなみにワイは1%の天才側やでぇコピペしてへんから
あと21行目とコメントがいまいちなのと、26行目のコメントが間違ってたから修正な
21行目
# #csv_dataのインデックス4の列に[1, 2, 3, 4, 5.9, 12, 15, 16]を追加
↓
# #csv_dataのインデックス4に列[1, 2, 3, 4, 5.9, 12, 15, 16]を追加
26行目
# #csv_dataのインデックス4の列に[1, 2, 3, 4, 5.9, 12, 15, 16]を追加
↓
# #csv_dataのインデックス1に列[1, 2, 3, 4, 5.9, 12, 15, 16]を追加 検索しても引っかかんないんだけどこのコピペどの板発祥なん? まぁ口だけよりは物作ってるやつの方が有能ではあるぞ 公式のCSVモジュールも最初はこんな感じだったんだろうか うぉおおコードがキモいよぅ……
2次元配列を確保していじるあたりの雰囲気がC++っぽくてPython的ではない
というかクラス使えと
def _csvfield2str(csv_data):
"""
csvのフィールドを全て文字列に変える
"""
return [[str(field).strip() for field in row] for row in csv_data]
この辺がキモすぎる
コメント一行にしたいし二重for inを崩したいのと同じような関数が並んでいるのをどげんかしたい
その原因はこの関数か?
def _str2int(string):
なんでcsv_readで重要そうな型の概念がこんな奥底にあるんだよ
というかこの関数必要なのか >>667
おっ、コード見てくれるなんて有り難いね
状態は保持しないからクラスはいらないかな、デリミタをカンマ以外に
選べるようにする場合はデリミタ保持しないとアレだからクラスにするけど
関数のコメントは増えるかもしれないし”””が好みだね
エディタの色分け表示の関係もあって”””使ってるけど、こだわりはそんなにない
内包表記の二重forは全然抵抗無いんだけど、csvは2次元配列だし、むしろ分かりやすいかと
_str2int関数とかは内包表記で使うために用意した
文字列をintにする場合、isdigit()で変換可能かどうかチェックしてというのを三項演算子で書いてたけど
長くなるし分かりにくいし、’ 10 ’のような文字列だとisdigit()でFalseになるからisdigit()する前に
文字列をstrip()しないとだし、floatはどうすんの?というアレがアレでこうなったというわけです
’2e+3’とかもfloat変換に対応すると判定がわけわかめなんで、一度float変換してみてエラーならダメなのねって感じです まぁ、道具として使うなら、想定通りに動きゃいいけどな 業務に使わせてもらっていいですか?!
あとコメント行で俺が作ったことにして書き換えたいのですが さすがに冗談だろ。
業務のコードにこんな独自実装なゴミ書いたら小一時間説教される。ていうか、俺はしたことある。
c++でstrtok使ってcsv読んでトラブル起こしたアホを。 ふぅー 落ち着いたか、、大興奮のレスバトルだったね、見ててワクワクしましたわ
さっきまでのワイの感想「今日はワイがスレの主役やでぇー、エェ? 業務使用の話まで来てるぅ 出典元はワイにしとけやガハハハ」 >>678
ジーンズはリーバイス以外履くな
靴はPuma
ここからだな >>677
ガハハじゃねーよ
朝一で新小岩駅で自殺しろゴミが 俺も書いてみた
実用性のない気持ち悪くいコードを書いたつもり
import functools
save=lambda data:'\n'.join(map(','.join,map(functools.partial(map,str),data)))
def foo(s):
try:return int(s)
except ValueError:return s.strip()
load=lambda s:[list(map(foo,s.split(',')))for s in s.splitlines()] >>647
csv_normal.pyがバージョンアップしたよ(https://ideone.com/78qd00)
・フィールドに日本語が混じっていても位置ズレしないよ
・csvファイルの読み書きにencoding指定できるようにしたよ
pandasってフィールドに日本語混じってると列が位置ズレして表示されるでしょ?
よく知らんけど、ある意味pandas超えたわガハハハ >>682
csv_normal.pyが更にバージョンアップしたよ(https://ideone.com/E3CpT8)
・クラス化したよ
モジュール.関数でいちいち呼び出すのめんどくせーと感じ>>667ご指摘の通りクラス化したよ、快適になったよ
十分楽しんだので、これで最後にするよ 自ら進化を止めるとき、それは己の負けを意味するのだ。
負けるな>>683 strtokは非スレッドセーフだったよな?
マルチスレッド環境でアホやったのかな Excel のCSV でも、日本語UTF-8 を扱えないのに、
文字化けしないのは、Ruby 以外では初めてかも
すごい技術力! 車輪を作る仕事は特殊性癖の人がやればいい
普通の人はそれをどう使うかに頭使った方がいい マはデータ管理しやすい様に隙間(行間)を無くすが、事務は見やすい様に適度に謎の改行を
入れるから、csvファイルは型を崩さずに計算して出力した方が良い。 クラスのプライベートなインスタンス変数定義するとき、アンダースコア1つか2つどっち使ってる?
今すごい悩んでる。 privateなら2つ
protectedなら1つ kivyの質問いいかな?
AsyncImageってので画像表示させてるんだけど、py側から渡すファイル名が同じだと画像の中身が変わっていても表示が変わらない。どうもcacheから読み込んでるらしい。kivyファイルの方に、
. AsyncImage:
. nocache: True
. source: root.file_name
とかやってみたけどダメだった。わかる人いたら教えてくらさい 世界の株価URL (http://sekai-kabuka.com/)から、
日経先物ミニの価格をスクレイピングしたいのだが、出来ない。
以下のコードで見ても価格が取れてない。
どうしたらいい?
XPathや正規表現で取れるかな?
誰か分かる人、お願いしますm(__)m
開発者ツールで見ると、価格が変わるとspanタブが閉じてしまうことと関係あるのかな?
import requests,bs4
from bs4 import BeautifulSoup
URL = "http://sekai-kabuka.com/"
res = requests.get(URL)
print(res.status_code)
r = res.content#html
soup = BeautifulSoup(r, "html.parser")
print(soup) ブラウザの右クリックメニューで、要素の検査をすれば、何のタグか分かる >>691
ヤッパリそうなるよね。
けど標準ライブラリのソース見たら2つ使ってるものがあまりなかったから質問してみた。 >>694
JavaScriptで後読みっぽいから、bs4じゃ無理
seleniumならいける >>683
csv_normal.pyがメジャーバージョンアップしたよ(https://ideone.com/mD1p2q)
・関数がメッチャ増えたよ
・メソッドがメッチャ増えたよ
十分楽しんだので、これで最後にするよ 楽しんでもらえて本望じゃわい
てか定期的なネタ投下も疲れる by 603 anaconda使ってるけどライブラリをcondaでインストしたりpipでインストしたりで混合してる
今は普通に動いてるけど多分後で困るよね? 質問です:
anaconda/Jupyterで勉強していましたが、
どうしても理解できない文法とか調べるのがつらくてIDEに頼ろうと思います。
PyCharmをインストール実行できたのですが、
anacondaで作った環境との連携方法がどうしてもわかりません。
連携して使うんですよね? >>704
file→settings→project→ interpreter
で
右上の⚙マーク add local でcondaのpathを指定すればオケ >>705
有難うございました。
今まで出ていた、
tokenを設定しろ、
といったエラーメッセージは出なくなりました。
?を押しても次のセルに移動せずに止まったままです。
動いているのか動いていないのか。。。
pythonw.exeじゃなくて、python.exeであってますよね。 0.00XXを掛けたい
数値
25
入力
1
望む出力
2.5
入力
2
望む出力
0.25
入力
4
望む出力
0.0025
どうすれば実現できますか? def f(x, i): return x/(10**i)
python3で。 >>711
ありがとう、ございます。
2ch時代から居て、無職で、もう5年目
10年前の中学時代から、アニメスレ覗き初めてボチボチ参加
無職になってから、ずっと5chだけど?>>709
お前こそ力抜けよw この煽り耐性の無さに「2ch時代」のワードの破壊力
>>662といいこのスレ優秀なコピペ原料多すぎない? なんというかまあ…古参としては安上りに盛り上がれる>>714が少し羨ましい ラズベリーパイ3、python2.7、wxpythonで
単純にスレッドで1づつ増加させてカウントした値をTextboxに表示させるとソフトが落ちるんですけど、これってどうしたらいいですか? >>720
wxWidgetsはワーカースレッドでUIさわるなって注意書きがどこかに書いてたはず。実際スレッド立ててUI触ると落ちることがよくある。
wxpythonでもうまいことやってくれてないなら同じじゃないかな。 あ、なるほど
C#のwpfだとワーカースレッドでUIを変更する場合、Dispatcherしないといけないけど
xpythonでも同じなんでですね
while内で連続的に変更する以外はワーカースレッドでも変更しても大丈夫だったので大丈夫だと思ってました。
何かUIスレッドにする記述が必要なわけですね。 Aくん「さわっちゃいけないんだって」
Bくん「あ、なるほど、記述すればさわっていいんだね」
Aくん「え?」 応援したいキャラは多くても、結婚したいキャラはニパちゃんだけですなww >>727
ワーカーじゃない本スレッドにDispatchするんだろ
人の言うこと聞くけど理解が表面的なAくんは伸びしろがないな Aくん「さわっちゃいけないんだって」
Bくん「あ、なるほど、記述すればさわっていいんだね」
Aくん「え?」
Cくん「ワーカーじゃない本スレッドにDispatchするんだろ」
Bくん「違うよ」 あ、プログラム知ってる人なら分かるけど、本スレッドという言い方はみないよ
メインスレッドかUIスレッドって言い方でいうから プログラマーならDispatherの意味も分からないなら教えてあげてもいいんだけど わかんないからおしえて
JavaでDispatchなんちゃらってかいたら
全部UI用のスレッドがやってくれるんですよーって教わった記憶しかない ちなみにこのスレってまともにプログラム分かる人いないのかな Pythonとか触ったことすらないが
多分>>720でつまずいてるおまいよりはわかるぞ!
お前ソフトより電機屋寄りだろ! いや俺もC#、C++、C、javaでならやり方分かってるんだけど
ここpythonのスレですよね
まー電機もある程度分かるけど 各言語の細かい違いまでは知らないけど、10言語ぐらい知ってる
ビジネスロジックを考える時は、
仮想言語とか、Ruby みたいな簡単な言語で考えてる
後は、それを各言語に置き換えるだけ ちなみにちゃんとプログラム分かってやったことある人ならC#でのやり方は知ってるんだなってのは分かるだろうし
冷やかしじゃなく真摯に知りたければ教えてあげるんだけど >>725
>wxWidgetsは、ワーカースレッドでUIさわるな
これは、イベント駆動の基本。
Android とか、Node.js とか、どの言語・フレームワークでも、そう
UI スレッド用の関数と、ワーカースレッド用の関数は別で、相互に呼び出し不可能
ワーカー側から呼び出せる、UI スレッド用の関数は、
特別に定義されているものだけしか使えない あ、なんかこのスレで少なくともpythonは俺が一番やってるってオチ? python 3000年前からやってるけど質問ある? なにジャブ打ち合ってんねん、はやく右ストレート打てや! はやく右ストレート打てや! >>745
仁徳天皇陵が鍵穴になるように、コード書かれたのも、あなたでしたか。
恐れ入りました。 えぇ?あれって鍵穴じゃなくて壷なんやけどなぁ
前方が方形で後方が円な前方後円墳なのにぃ ここのスレの人達って全然プログラムの話しないし、プログラム全然できないはったりだけの人達ばかりだけと何が目的でこのスレにいるのかな。
実は一応密かにはプログラムできるようになりたいなとは思ってたりするの。 とりあえず、752は酔った上司に
ビール瓶とかリモコンで殴られるタイプ
だろうなとは思った pythonはどんな感じか知りたくてこのスレ見てる
pythonでできたプログラムさわった事ないんだけど
ホントにpythonって流行ってるの
何かに騙されている感じがする >>756うん。貧乏やったから3000年前にはテレビは買って貰えなかった 3秒ごとにウエブスクレイピングして、15秒足の4本値を作りたい。
list object has no attribute 'resample'のエラーが出ます。
いいアイデアはないでしょうか?
import numpy as np
import pandas as pd
from pandas.core import resample
from bokeh.io import curdoc
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure
data1 = []
df = [[],[],[],[],[]] #time・o・h・l・c
def get_data():
#ウエブスクレイピングの処理
return d
def update_data1():
global data1
global df
web_data = get_data()
data1.append(web_data)
df = data1.resample('15S').ohlc()
new_data = dict(t=df[0], o=df[1], h=df[2], l=df[3], c=df[4])
source1 = ColumnDataSource(dict(t=[], o=[], h=[], l=[], c=[]))
#グラフ描画の処理
fig1 = figure(x_axis_type="datetime",width=900, height=600)
fig1.line(source=source1, x='t', y='c')
#o,h,lの描画処理(省略)
plots = fig1
curdoc().add_root(plots)
curdoc().add_periodic_callback(update_data1, 3000) #3秒ごとにウエブスクレイピング というかふつう「15秒足の4本値」って言われてなんのことかわかるのか?
俺はその世界の住人だからわかるけど・・・・・ コメントも関数の命名規則もクソだし、ここまで人に物を伝えるのができない人もめずらしいよね data1にresampleってメソッドを持ったオブジェクトが入ってねえ
ってエラーなんだから
resampleってメソッドを持ったオブジェクトを入れてやればいいんだよ
簡単だろ 「15秒足の4本値」って相場か?
15秒毎の、4本値は、始値・終値・Min・Max か? O,H,L,C open high low close
ディトレーダさんだから、
素直に取引業者に毎月使用料払ってapi
つこうた方が良いぞよ そんな事言わずに、もう少し手とり足とり
教えてもいいと思いますが。 >>766
ソース全部貼れよって人は手取り足取り教える気だと思うけど
無視しといてその言い草は何なのかね
よほど躾が良かったんだね、君は PyChamでファイル編集して、
Save All
しても保存されないんですが、
何が起きてるんでしょう。 ファイルが勝手に読み取り専用になってました。何が起きたんでしょう。。。
それに保存できないのに警告もないとか。。。 重い数値計算だけはpythonを使うのが辛いけど
他はもうpythonでいいや >>754
githubとか見ればいくらでも転がってるだろ
それともプログラムじゃなくてアプリケーションソフトってことか?
アプリ見ただけで言語わかるのか? 大学生辺りがアフェサイトに引っかかって、プログラミング始めました(笑)だろ。
本場がアメリカなのに、英語検索もせずに、記事が見つからない!! wwww
とかww 流行ってないwww 情報が少ない(笑)ww なんだろ?www
なんでww 他人が完成させたコードをお前が触る前提なんだよwwww
どんな感じか知りたいならwww 公式ドキュメントでも読んでろよwww
俺は読まないけどなwww あーーー 読めないんだったwwww >>775
言語仕様が良いから凄い方が集まってきて
凄い方が作ったものを見て集まってくる方がいて
集まってきた方が作ったものを見てまた集まってくる方がいて
みたな事を具体例付きで知りたいんじゃなかろうか
自分は知らないけどこういう理想的なものでも問題点があったりするのかな numpyで作った2次元配列をそのままバイナリファイルにして、
ImageJとかで画像でみたいのですが、
numpyにバイナリファイル出力すると、
勝手にヘッダー部を付けてしまうんですね。
ヘッダーを無しにするには?_・」 flattenで1次元配列にして、forで回してファイル出力したら、ダンプファイル作れました。 pythonと関係ないけど、君の視点が消費者そのもの
良い物に集まるのは確かだけど、作ったものを見て集まるのが仕組みが解らない。
そもそも、凄い人って幾らでソレを公開するの? 無料?
それなら、俺が有料で売る。 と言うネタをAndroidで一度やっただろwwww Pythonの優秀な機械学習ライブラリに有料なのあったっけ
有料で公開して売れるようなの作ってよ >>783
pythonの人気ってライブラリの豊富さも大きいと思うんだけど
それは凄い方がpythonの何かに惹かれて作ったものだよね、多分
そのライブラリを使って何かを作りたいって集まる方が消費者ってのは違うと思う 馬鹿だなwww お前らwwww
俺がプログラム何て分かる訳ねぇだろwwwwww
ぶひいいいいいいいいいいいwwwwwwwwww 5ch荒らしながらwww そろそろ無職6年目だしなwwww
wwwww wwww www
ばーーーかwwww この忙しい時期に煽りに反応してんじゃねぇよ!!!
今年中に、おちんちんにベロが届かなかったら、お前ら覚悟しとけよ!wwww
ぶひいいいいいいいいいいいいいいいwwwwwwwww バカを自白するのまではいいが
つまらないのは罪だな。 こういう煽りを機械学習であしらうコード書いてみたい。 冗談抜きで、何が格好良くて。何がダサいのか解らない。
誰か教えて下さい。 Bottle 1ページに収める時に多様する(練習用)
Django 普通に多機能 (設定が面倒いがチュートリアルをggりながらするとできる) ふっざけんなよぉおおおおおおおwwww 糞野郎wwwww
俺は神だぞwwww クソPCがっ!っ!!wwwwwwwww
俺の願いぐらいいいいいいいいい 叶えやがれlwえっうぇえええwwwww
(^q^)「んぐぅうううううwwwwwwwwww 気持ちいい」(裏声) Djangoでグラフ作成もできなくも無いけど、
昨日のグーグルニュースでブラウザーとオフィスが合体した奴が
その内でるらしいから、どんな形式に変わるのかは分からない。
勉強して置いて、損は無いと思う。
オフィスが絡むから出力形式が変わるんか? あーー分からん。
(俺の言う事は信じるなよwww) >>799
何オナッてんのさ
もちろん、いっぱい出たんやろな >>800
消えろ!! てめぇ俺の真似しやがって!”!
ぶひいいいいいいいいいいいいいwwwwwwwwwww dat[0, :] = x
これは何ていう記法?
コンマが無ければただのスライシングだけど…
オライリーの本2冊持ってるけど出てない (^q^)「しりとりってどうやったらできますかあーーー?」(大声)
l=[]
#x=int(input())
#[l.append(input()) for i in range(x)]
l=['O','K','N','I','T','O']
[print(i) for i in reversed(l)] タプルを返す関数つくるのに
return (a,)
とか書く人いるけど全く無駄だよな
return a,
でいい 可読性において return (a,) の方が圧倒的に優れている シーケンスの要素にタプルを格納できるのはもちろん知ってるけど
インデクシングやスライシングのためにタプルを指定するという事はつまり何なんだ…
この辺きちんと理解できてなかったな。もう少し考えてみる >>809
おっ、お前もいっちょ前にようやく覚えたんか
そりゃ覚えたら、使ってみたい年頃や >>816はレス番間違いや
正しくは>>808な
マジで宇津田氏脳や >>810
ダウト
>>> 1,
(1,)
>>> 1,,
SyntaxError: invalid syntax
>>> 1,,,,
SyntaxError: invalid syntax pythonをはじめてnumpyとmatplotlibで遊んでて
あまりにグラフの表示が遅かったのでpyopenglに行って作ったのだけど
せっかくpythonを使っているのにあまりライブラリを生かしている気がしません
で、Pythonらしく、物体検出が面白そうなpypenCVに行こうかなと思っているのだけれど
pyopenCVに行くならこれは勉強しておけみたいな事があれば教えてください
結構バグがあるという噂を聞いたのでちょっと怖い >>822
>pyopenCVに行くならこれは勉強しておけ
C/C++ >>824
いやなら site.py_ みたいに rename >>826
やってみる
一応python3.4と3.6の仮想環境作ったら問題なかったからデフォルトのpython3.5が邪魔してる感じなのかな >>814
if文とかでも、andやorを併用するときは、条件をパレンで囲ったほうがわかりやすい場合もある
基本的に非推奨みたいだけど、JSの時のクセで、単一条件でもついやってしまうわ parenthesis
bracket
brace >>829
パーレン()
ブラ<
ケット>
スケブラ[]
カリブラ{} >>830-832
ブラケット、スクエアブラケットは知ってたけど'()'ってパーレンって言うのか
普通に括弧って呼んでた アマでざっと見た感じ
PythonユーザのためのJupyter[実践]入門 空の配列って連番作成できないの?
L=[]
R=[]
とか、毎回書いてるんだけど、面倒だからA-Zまで上記の方式でまとめて作成できない? >>836
変数をリストに入れてループで回せばいいだけじゃん >>836
毎回プログラムで
プログラムをファイルに書き出す
プログラムをつくれば
いいんじゃないかな? >>836
そんなことしなきゃいけないロジックに問題があるのでは? >>836 できましたぁ!
>>> from collections import defaultdict
>>> d = defaultdict(lambda:[])
>>>
>>> d['A'] = [1,2,3]
>>> d['A']
[1, 2, 3]
>>> d['B']
[]
>>> d['B'].append(3)
>>> d['B']
[3]
>>> d['C']
[]
>>> d['Z']
[]
>>> >>836
おそらくロジックを変えたほうが良いが、どうしてもというならできないこともない
https://ideone.com/nj0ZjO A.append(123)とか書いたら name 'A' is not defined
と出るので、仕方なく A=[] と毎回かいてる。
とりあえず、>>843を使わせて頂きます。
ありがとうございました。 みんなこの質問でよくわかるな。質問の内容自体が理解できないわ。 質問なのですが
pythonで書いたコードを実行中に
一分後にコードをすべて再実行するロジックを入れたいのですが
どういったコードをかけばいいでしょうか sleep()とかwait()みたいな関数なかったっけ sleep とかの 一時停止後の再実行ではなくて
計算したのをすべてなしにして
初めから再実行をかけたいんですよね
こまってます 普通に、1度目の処理は最後にsleep(60)が実行されて、2度目で終了するループ処理では駄目なの? >>851
sleepからあけた後に勝手に一からやり直しゃいいと思うよ。
別に一分間隔でプロセス起動しても良いけど。 def unchi():
print ("unchi")
t=threading.Timer(60, unchi)
t.start() クラスの中でそのクラスのメソッドを呼びたいんだけど
class Test(Parent):
Test().func()
def func(self):
....
....
じゃだめなの?
not defined のエラーが出る @staticmethod
def func(self): ああすまそ @staticmethod なら self いらんかった >>858
>>860
やってみたけどだめだったorz 自己レス、取りあえずインスタンス生成したとき1回呼ぶだけなんで以下でいいみたいだ。
class Test(Parent):
def __init__(self,**kwargs):
super(Test,self).__init__(**kwargs)
self.func()
def func(self):
.....
..... ふつうはそうするが
別の理由があって聞いてるんだと思った >>699
csv_normal.pyがバージョン2.4.0にバージョンアップしたよ(https://ideone.com/u5Ji8H)
Version: 2.4.0
・csvデータを罫線で囲む機能を追加したよ(csvデータの可読性アップ)
・関数名などをスネークケースに統一したよ(コードの可読性アップ)
・関数、メソッドを沢山追加したよ(csvデータの処理機能アップ)
・数値リテラル内のアンダースコア表示に対応したよ(数値の可読性アップ )
思いついた機能は全部入れたよ、頑張りすぎてコードが千行超えちゃったよw
目玉は罫線で囲む機能で、罫線パターンは簡単に自作できるようになっているよ
少し早いけどクリスマスプレゼントだよ >>> import csv_normal as csv
>>> s='''
今日は何かめっちゃ褒められてますがな
ところでまた機能を1つ思いついてしまった・・
この縦書き機能を・・天才かもしれん'''
>>> c = csv.csv([list(string) for string in s.split('\n') if string])
>>> c.fill(); c.refresh_field(); c.replace_field('', ' ')
>>> c.csv = c.csv[::-1]; c.csv = csv.row2column(c.csv)
>>> c._display_delimiter=''
>>> c.print()
こと今
のこ日
縦ろは
書で何
きまか
機ため
能機っ
を能ち
・をゃ
・ 1褒
天つめ
才思ら
かいれ
もつて
しいま
れてす
んしが
まな
っ
た
・
・ ボタンを押したときに01〜03の関数を動かしたいんだけど、
btn.OnClick.Add(01,02,03)
とかやってもうまくいかなくて、
btn.OnClick.Add(01)
btn.OnClick.Add(02)
btn.OnClick.Add(03)
みたいにやらないといけない
でもこれだと02や03が不安定で、動くときと動かない時がある
どうすればいいでしょうか >>866
csv_normal.pyがバージョン2.5.0にバージョンアップしたよ(https://ux.getuploader.com/codes/download/6)
Version: 2.5.0
・print_idx2メソッドを追加したよ(インデックス表示+罫線で囲むからcsvデータが更に見やすくなるよ)
ideoneサイトだとコード容量オーバーで貼り付けられなかったからコードアップローダーにアップしたよ
※Python3.6から追加された機能を使用しているから古いPythonだと動かないので注意だよ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) >>870
01-03の関数を大きな関数の中で呼び出して、btn.OnClick.Add() にはその大きな関数を渡せばいいんじゃないの お構いなしに型変換して同じ変数にぶち込むスタイルのコーディングがいつまで経っても慣れんわ 型はオブジェクト自身が持っている、変数は指しているだけ 自分も変数なるべく使いまわしてるんだけどこれ速度と可読性の観点でどうなの? Python使ってて小手先の最適化を気にしてる時点で馬鹿に分類されるよ for文をなるだけ使わないってのは速度の点で重要だけど
素直にc++なりで書いた方が慣れないうちは楽だなと思ったり 12時間頑張ってそれは草
まあ、ママは誉めてくれるんじゃね…
よかったね >>871
少し使ってみたけどデータはpandasよりも格段に見やすい
データ抽出はpandasのqueryの方が簡潔で分かりやすい、csv_normalは冗長的だがPythonに慣れてる人はこっちでもいいかも
データを枠で囲む機能はまあまあ気に入った
感想はこんな感じかな、なかなか良い出来だと思うよグラフ化することが無いならこっち使ってもいいかもな いやいや変数の使い回しなんて小手先すぎるだろ…
勿論、コマ落ち防止でgc発生を絶対抑止しないといけないとか、変数使い回しが必要な場面もあるけどさ。
あえて書くまでもないことだけど、pythonに限らず、変数を使いまわして可読性メンテナンス性を下げるより、アルゴリズムを変えることを検討した方がいい 変数を使い回すということは、前のデータはいらないってこと、そして前のデータと意味は同じってこと
baka = >>875
baka.ng()
baka = >>886
baka.ng() 変数使いまわさないと
事実上変数のスコープがずっと続いて読みづらいことある >>889
例えば"aの色"という変数があって、aの色が変わったのなら、当然もとの"aの色"変数に格納する。
これをそもそも使いまわしと言わない。
意味が違うのにデータがいらないという理由で使いまわしてるのなら話にならない。
>>887
何だって例外はあると思うよ。 どっちでも、バグ無く動けばいいという考え方じゃ駄目なん? 規約という鎖で自分を縛って喜んでるのがたくさんいるんだ >>891
設計思想によっては例外という割合ではない >>892
ある程度の一貫性は欲しいかな
同じソースの部分部分で違うと読み間違えたり >>891
せっかくbakaを例に出してんのに例を例で被せてくんなよバカ
オマエの例でいえばbakaは"色"という変数だマヌケ
"色"にaの色を格納して、いらなくなったから"色"にbの色を入れてんの
そして色という意味は同じわけ、bakaの例みれば分かるだろ ちっ、せっかくカウンター用意してたのに噛みついてこいやぁ!!
つまり変数の使い回しというのはfor文の変数だ
for baka in (>>876, >>886, >>891):
baka.ng()
はい、論破ァーww 最近勉強始めたばっかの初心者なんだけど質問すまん
これの下の方の二つの input って誤植だよね? 正しくは print であってる?
http://imgur.com/fy1mnRS.jpg >>899
このコードをそのまま実行した場合と
該当箇所の input を print に書き換えて実行した場合を比較すればわかるけど
「そういう動作」を狙って著者さんがこう書いただけだと思う
初心者向けのサンプルプログラム以外で、こういう input() の使い方ってしないと思うけどね
出版社に問い合わせても図書カードとかはもらえなさそう >>896
「みんなのPython 第4版、2017」が定本 同じidなら結合して出力したい。
l=[['id0', 'pyt'], ['id0', 'hon'], ['id1', 'aiu'], ['id1', 'eo']]
求める結果
id0 python
id1 aiueo ttp://www.oreilly.co.jp/books/images/picture_large978-4-87311-778-2.jpeg coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
A01='Coordinates: {latitude}, {longitude}'.format(**coord)
print(A01) グラフ描画はやっぱりseabornですかね?
他にお勧めのふつくしいパッケージあったら教えてください ary = [['id0', 'pyt'], ['id0', 'hon'], ['id1', 'aiu'], ['id1', 'eo']]
hash = {}
ary.each_with_object(hash) do |(key, value), hash|
if hash[key]
hash[key] += value
else
hash[key] = value
end
end
p hash #=> {"id0"=>"python", "id1"=>"aiueo"}
Ruby で書いた
https://paiza.io/projects/bbOPs6qzVV-5PLOrQ545IA >904
defaultdict 使うと楽だよ。
import collections
l=[['id0', 'pyt'], ['id0', 'hon'], ['id1', 'aiu'], ['id1', 'eo']]
dic = collections.defaultdict(str)
for k, v in l: dic[k] += v
for k, v in dic.items(): print(k, v) import seaborn as sns
これ何でsnsにするの? sbが適当じゃない?? seaborn調べると皆snsにしている Samuel Norman Seaborn っていう架空の人物が登場するテレビドラマがあって、それに掛けたジョークらしいよ >>913
サンクス シャレてるからワイもsnsにするでぇー あれ?やっぱりみんなseabornなの?
他にあれば知りたい プログラム初心者なんだけど質問第2すまん
pip installについてなんだけど
教本通りにQRコードを生成するパッケージをインストールしたいんで
pip install pillow qrcodeって入力したら
Collecting pillow って出てきてずっと固まってる
時間経てばインストールし終わる? Windowsならコマンドプロンプトを起動するときに右クリック→"管理者として実行"
で起動しないとpip install失敗するよん requirements.txt と Pipfile のどちらを使うべき? Microsoft Windows[Version 6.0.6002]って書いてある
管理者として実行も試してみたんだけどCollecting pillowから進まない
うーん何か足りないんかな どっちにしろおま環だから何とも言えんが
pillowがだめでもPIL入れてればいけるんじゃね pip install pillow qrcode
でインストールできたでぇー、QRコードも生成できた
pythonのバージョンは3.6.1
pipのバージョンは9.0.1
Pillow(4.0.0)インストール済み 解決した!
恥ずかしくて言えないくらい初歩的なミスだった……
すまん、ありがとうございました csv_normal.pyがバージョン2.7.7にバージョンアップしたよ(https://ux.getuploader.com/codes/download/7)
もう追加機能も思いつかないので、たぶんこれがファイナルバージョンとなるよ
Version: 2.7.7
・使用例の説明を改善
・冗長性の改善(>>885のご指摘を受けて)
・冗長な関数名、メソッド名、引数名などを簡潔に改名
・ヘッダー情報を更に便利に簡単にアクセスできるように改善
・メソッド追加
・shapeメソッド - 行列のサイズを表示(pandasからパクった)
・print2メソッド - printメソッドよりさらに見やすい(罫線で囲むから)
・inquire_field_valueメソッド(>>904もこれで解決)
などなど
あとがき:
csv_normalは配列を配列のまま扱うことでPythonの強力な配列操作をそのまま利用でき
簡潔で直感的、習得も簡単ですぐに使用できる優れたモジュールとなりました
特にデータを罫線で囲んで表示する機能は秀逸で他に類をみない可読性を提供します
これはpandas越えたわ・・ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) >>871
csv_normal.pyがバージョン2.7.7にバージョンアップしたよ(https://ux.getuploader.com/codes/download/7)
もう追加機能も思いつかないので、たぶんこれがファイナルバージョンとなるよ
Version: 2.7.7
・使用例の説明を改善
・冗長性の改善(>>885のご指摘を受けて)
・冗長な関数名、メソッド名、引数名などを簡潔に改名
・ヘッダー情報を更に便利に簡単にアクセスできるように改善
・メソッド追加
・shapeメソッド - 行列のサイズを表示(pandasからパクった)
・print2メソッド - printメソッドよりさらに見やすい(罫線で囲むから)
・inquire_field_valueメソッド(>>904もこれで解決)
などなど
あとがき:
csv_normalは配列を配列のまま扱うことでPythonの強力な配列操作をそのまま利用でき
簡潔で直感的、習得も簡単ですぐに使用できる優れたモジュールとなりました
特にデータを罫線で囲んで表示する機能は秀逸で他に類をみない可読性を提供します
これはpandas越えたわ・・ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) test
なんか専ブラの動きが変だな
また仕様かわったか ライブラリをインストールしてチュートリアルのプログラムを一通り動かすまでに結構時間を消費しちゃう
バージョンによってチュートリアルを結構改変しないと動かないのが多いし
魅力的なライブラリが多いけどそこまで直ぐに使えるようにはならないと思いましたまる バージョン変わる毎にメソッド名とかコロコロ変えすぎだよなRubyかよ 改変したチュートリアルをアップでアフリエイトがはかどるな >>909
どうせ書くなら、組み込みメソッドの Enumerable#inject と Hash#merge を
使った関数型プログラミングのスタイルが Ruby らしいのではないかと思われ
https://ideone.com/v02Ldy
for文のループをゴリゴリ回す手続き型プログラミングのスタイル(>>911)とは対照的だね l=[['id0', 'pyt'], ['id0', 'hon'], ['id1', 'aiu'], ['id1', 'eo']]
from itertools import groupby
for r in [(k, ''.join([item[1] for item in i])) for k,i in groupby(l, key=lambda x:x[0])]: print(*r)
はい、オレが優勝 ┐(´- ` )┌ ハッ、イテレータが欲しいのだよ、これだからググっただけの奴はw あ、これ何も考えてない奴の常套句だわ 回答書けないならレス汚さないでくれる? え?真面目に言ってるの?どのみちイテレータ返るでしょ、ジェネレータを言ってるにしてもジェネレータ式はないし
リストが欲しいというならギリギリ分からなくもないが、それでもコールバックを与えるgroupbyには関係ないよね ブヒョヒョヒョヒョッw operator.itemgetter使った例書いてみろよバーカ
オレのより良くなるわけねーんだよバーカ 知ったかバカがww 流れぶった切って初心者の質問3つめすまん
pipで暗号化だかなんだかのパッケージをインストールするのに
pip install pycrypto って入力したんだがエラーになった
赤文字が言うにはimport setuptools,tokenize;_
file_ってことらしい(たぶん)んだけどどうすればいい?パソコン自体にも明るくないんで初歩的な質問だったらすまん Anacondaってのはインストールした
たぶん出来てると思う >>911
>>933
そのまま、ソートできたりしますか? マジで君の葛藤
そんなに言うなら書いてやらぁ、import operator ・・はっ!?
あいつのより一行増えちまうぅぅ・・operatorをimportするだけで負けちまうぅぅ
どーすればいいんだあぁ マジで負けちまう、マジでマジでぇぇええ Scipy lecture notes は難しいなあ >942
911 は、
lst = sorted(dic.items())
でキーの昇順のリストlstを作ることができるよ。 >>910英語読める人って憧れるわぁ
気が向けば、気力が続けば読破してみる♪ Excelに「Python」搭載検討 Microsoftがアンケート実施中
(ITmedia NEWS)
[続きを読む] >>947
matplotlibが使えるってことですかね。 Microsoftの事だから、独自の実装てんこ盛りとかしそう 同じタブで開くにはどうしたら良いのでしょうか?
実行すると、同じウィンドウで開いてしまいます。
https://ideone.com/Rb3ecO Pythonでサーバー系の勉強をしたいんだけれども分かりやすい書籍知りませんか? >>953
俺もそう思ったけど、イミディエートウィンドでちょっと試しに実行したりするのはスクリプト言語の方がいいのかも
スクリプト言語の中ではPythonは悪い選択じゃない >>952
webbrowserのopen_new, open_new_tabは可能であれば新しいウィンドウ、新しいタブで開くという仕様
動作が同じということは不可能ということなのでsubprocessで直接ブラウザの実行ファイルを叩きましょう
chromeなら(参考: ttps://blogs.yahoo.co.jp/kerupani/15783349.html)
>>> import subprocess
>>> open_new = [r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe', '--new-window']
>>> open_new_tab =[r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe']
>>> url='https://ideone.com/Rb3ecO'
>>>
>>> subprocess.call(open_new + [url])
0
>>> subprocess.call(open_new_tab + [url])
0
>>> >>904
>>> l = [['id0', 'pyt'], ['id0', 'hon'], ['id1', 'aiu'], ['id1', 'eo']]
>>> for k,v in {id:[i[1] for i in l if i[0]==id] for id in dict(l).keys()}.items(): print(k, ''.join(v))
id0 python
id1 aiueo
>>>
リストlをidの数ぶんなめるからdefaultdict版よりも遅いのかな?と心配でしたが爆速でした
内包表記爆速でした(https://ideone.com/CQmM0C) >>955
ありがとうございます
Pythonプロフェッショナルプログラミング-第2版-株式会社ビープラウド
ってやつでしょうか >>958
もうちょっと速度評価してみた結果、idの種類が5で内包表記版とdefaultdict(list)版が同じくらいの処理速度になる
idの種類が増える毎にdefaultdict(list)版の方が速くなる、defaultdictの方が優れているね、分かりやすいし
Ruby版はどのくらい速いのかな?
>>> l=[[f'id{i}', 'hoge'] for i in range(5)]*10000
>>> with get_time():
d = {id:[i[1] for i in l if i[0]==id] for id in dict(l).keys()}
0.014081239700317383
>>> with get_time():
d = defaultdict(list)
for k,v in l: d[k].append(v)
0.014064788818359375
>>>
>>> l=[[f'id{i}', 'hoge'] for i in range(50)]*10000
>>> with get_time():
d = {id:[i[1] for i in l if i[0]==id] for id in dict(l).keys()}
1.0660841464996338
>>> with get_time():
d = defaultdict(list)
for k,v in l: d[k].append(v)
0.14391684532165527
>>> >>896これなんてどうかな?
ttp://www.amazon.co.jp/gp/product/B074CZNCM9/ こういう処理は一行で書けますか?
for i in range(2):
__if i==j:
____print('end')
__for j in range(2):
____print(i,j,'',end='') 造作もなきこと!Pythonのテクニックを使えば多重ループを1行で書くことなど造作もなきこと!
exec("""j=None\nfor i in range(2):\n if i==j:\n print('end')\n for j in range(2):\n print(i,j,'',end='')""") 空白が潰れちゃったよから\tに変更
exec("""j=0\nfor i in range(2):\n\tif i==j:\n\t\tprint('end')\n\tfor j in range(2):\n\t\tprint(i,j,'',end='')""") >>965
>>967
ありがとうございます。
exec("a = 5; b = 7; print(a+b)")
と言う既述方法は知ってましたが、
制御分などの盛り込み方が不明だったので助かりました。
これで、制御分の横にコメント文を
スペースで埋めて揃える作業をしなく良くなりました。 グラフ描画についてbokehとplotlyが気になるのですが,使っている方いらっしゃいますか? リスト内の要素を部分一致で検索したいのですが、どう書けば良いのでしょうか?
完全一致ならば上手くいくのですが… # コメント コメント
[[l.append(i) for i in range(1,6)] for j in range(int(input()))]
exec("""print(l)\nfor i in l:\n\tif i==2:\n\t continue\n\tr.append(i)\nprint(i,'',end='')""")
exec("""def Sample0(x):\n\treturn x**2\nfor i in r:\n\tprint(Sample0(i))""") >>971
import re
l=['I']
r=['ABCDEFGHIJKLMNOPQRSTUVWXYZ']
#[print (match.group()) for match in re.finditer(l[0],r[0])]
for match in re.finditer(l[0],r[0]):
____print (match.group())
ゆっきーは、頭が可笑しいので他の人に聞いて下さい。 >971
リスト内の要素を部分一致で検索する、というのが曖昧な表現なので、具体例で説明して欲しい
["abc", "bcd", "xyz"]
があった時に、
"bc"を検索して、
["abc", "bcd"]
を返すような関数を作りたいの?
[1, 2, 3]と[2, 3, 4]と[9, 5, 19, 7, 9] があった時に、
[0, 1, 2, 3] を検索して、
[1, 2, 3] と[2, 3, 4] を返すような関数を作りたいの? >>971, >>976
>>> list_1 = ["abc", "bcd", "xyz"]
>>> list_2 = [[1,2,3], [2,3,4], [9,5,19,7,9]]
>>>
>>> import re
>>> [i for i in list_1 if re.search(r'bc', i)]
['abc', 'bcd']
>>>
>>> [i for i in list_2 if all(j in [0,1,2,3,4] for j in i)]
[[1, 2, 3], [2, 3, 4]]
>>> >>> [i for i in list_2 if any(j in [0,1,2,3] for j in i)]
[[1, 2, 3], [2, 3, 4]]
>>> >>979
>>980
こっちの方がシンプルで良いですね。
ありがとうです ( ゚д゚ )クワッ!! Pythonってプログラミング言語として難しいほう? 言語だけでも自分の3割り増しの実力のプログラムが作れる感じのノリが好き 動作
トランプデッキから5枚引いて、引いたカードをデッキから削除
手持ちのカードのマークをカウントする
もっと、スタイリッシュに書き直してくれる人居ませんか?
https://ideone.com/0bukfh スペードの1〜13・ハートの1〜13・クローバーの1〜13・ダイアの1〜13の順で、
1〜52のカードID をつけているから、
カードID を13で割って、その商と余りで、スートと数がわかる def suit_and_number (card_id)
suit = card_id / 13
num = card_id % 13
if num == 0 then
num = 13
suit -= 1
end
return suit, num
end
ary = (1..52).to_a.shuffle!
(0..10).each do |i|
suit, num = suit_and_number (ary[i])
puts "id : #{ary[i]}, suit : #{suit}, num : #{num}"
end
Ruby でやった
https://paiza.io/projects/sJs_Ge5be9uq44J6SHoJdw
結果を並び替えたもの
id : 1, suit : 0, num : 1
id : 14, suit : 1, num : 1
id : 27, suit : 2, num : 1
id : 40, suit : 3, num : 1
id : 13, suit : 0, num : 13
id : 26, suit : 1, num : 13
id : 39, suit : 2, num : 13
id : 52, suit : 3, num : 13 >>990
わざわざ通し番号から数字やスートを算出している合理性がない
テクニカルな雰囲気な方法を思い付いて嬉しいのはわかるが、効率が悪く分かりにくいだけだから素直に別々に分けなさい >>991
カードクラスを作って、インスタンス毎に、カードの画像を持たせたりしても良いけど、
インスタンス毎に、スート・数を持たせるのは、メモリの無駄だろ
ID から簡単に計算できるのだから、それらを計算値で返しても良いのじゃないか? 画像はflyweightになるだろ。
いちいちコピーすんのか? >>994
> インスタンス毎に、スート・数を持たせるのは、メモリの無駄だろ
おじいさま今時はそう言うことを気にしなくてもよくなったのよ ふぅー 落ち着いたか、、大興奮・・あれ? ワイのもイジれや、ワイのもイジれや テラテイルでも聞いて来ましたが、色々有るようです。
https://ideone.com/Mg9oG7
次スレは>>1000が建てて下さい。 このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 111日 21時間 36分 51秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。