くだすれPython(超初心者用) その43【Ruby禁止】
■ このスレッドは過去ログ倉庫に格納されています
★当スレにRubyのソースコード類を書くことを禁ず
☆Ruby等、Pythonではないプログラミング言語での回答類を書くことも禁ず
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境(バージョン/IDEまたはcommand line/OS)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで
※前スレ
くだすれPython(超初心者用) その42【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1552884175/
◆PythonのHome Page
http://www.python.org/
◆まとめwiki
ttp://python.rdy.jp/
◆Pythonのソースコードをそのまま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/ ログイン必須になりやがった(゚Д゚#)
−−−−天麩羅ここまで−−−− >>681
論点はそこじゃない。
Rubyバカは黙ってろ。 >>681
ゆっくり死んでいってるねwRubywww pythonで正規表現をしたいです。
文字列中にある\をすべて削除したいのですが、text.replace("\\","")とやっても消えていない部分があります。
\',\'のような文字列が残ってしまいます。
これらを消すにはどうしたらいいのでしょうか?
また、listname.mylist=83656873;\ngFilename.file=435;mylist=new list(\'\\という部分を削除したいときにはどのように指定すればいいのでしょうか
数字部分は動的です。
本当に困ってしまったのでどうかよろしくお願いします。 >>684 そのソースコードをどういうコンピュータで入力したか知らないけど、 \ には2種類のコードがあるの知ってる?
x5C と xA5
バックスラッシュ と円サイン。 どちらも表示させると \ になるから紛らわしい。
消したいのはバックスラッシュでしょ? >>684 エディタで置換をして自分の思った通りに置換できるかどうか確かめてみたら?
listname.mylist=83656873;gFilename.file=435;mylist=new list('\
と変換したいの? >>690
.extract()を付けてもダメでした >>684-688
\ はバックスラッシュで、
\n は、単に改行を表す、エスケープシーケンス
Ruby で説明すると、abc の後ろで改行されている!
123, xyz の後ろでは改行されない
p で内容を見ると、"〜" で囲まれているから、これは文字列であり、
789 の後ろに、改行コードがあることがわかる
print "123"
print "abc\nxyz"
p "789\n"
出力
123abc
xyz"789\n"
エディタの表示では改行されるが、文字列の内部表現では、\n となる。
\n は、単なる決め事であり「\ n」という2文字が、実際に存在するわけではない!
文字数も、\n で、1文字扱い。
p "\n".length #=> 1 日本の文化について質問したら韓国文化の説明が始まった。何でも日本文化は韓国のパクりなんだそうな。 >>689-691
これは、一番近い先祖のID からの、パスになっていない!
'//div[@class="tpcHeader_thumb"]/p/@src'
Chrome の開発者ツールで、右クリックメニューから、XPath, CSS Selector を取得すると、
//*[@id="tpcHeader"]/div[2]
#tpcHeader > div.tpcHeader_thumb
CSS Selector で、
#tpcHeader > div.tpcHeader_thumb > p.tpcHeader_thumb_img
XPath で、p の直下ではない!
p要素のsrc 属性だろ
Ruby で、selenium-webdriver, nokogiri で、作った
driver.navigate.to "https://news.yahoo.co.jp/pickup/6327568" # ニュース
doc = Nokogiri::HTML( driver.page_source )
# at_css で、該当する最初の1つだけを取得する
element = doc.at_css( "#tpcHeader > div.tpcHeader_thumb > p.tpcHeader_thumb_img" )
url = element.attr( "src" )
puts url #=> 画像のURL >>688
listname.mylist=83656873;\ngFilename.file=435;mylist=new list(\'\\
を消したいです
別に変換がしたいわけじゃないんですけど・・・
なんか変なこと言ってるから伝わってないんでしょうか・・・ というか、そもそもa='3745'のときにa.replace("\d*","A")とやっても置換されません
考えられる理由を教えてください
一体どこがおかしいのでしょうか
import reは当然してます。aはstrです。 考えられるって言うか
str.replaceは正規表現を受け付けない
import reすればstr.replaceで正規表現が使えるなんて誰から聞いたのか知らないけど
大人しくre.sub使ってください あとねーこういう質問するときのテクニックとして
〜を消したいですとかじゃなくて
入力と欲しい出力を示す
例えば
入力文字列は "listname.mylist=83656873;\ngFilename.file=435;mylist=new list(\'\"
で、出力として "listname.mylist=83656873;ngFilename.file=435;mylist=new list('"
を得たいです。とかね >>696 全く伝わらないな、全体の文字を1文字残らず消したいと言う意味?
兎に角出力サンプルを出してくれ。 python2 からの移行はどんな具合ですか?
数年前は一部の強力なモジュールなどが 2 で
移行がしにくい状態だったと思いますが、
2 の公式サポートが あと1年程でおわるはずです
そろそろ全て移行のめどがついたころだと思っているのですが 今日日python2使ってるやつは無能かマゾか基本的人権が保証されていない環境で働いてる奴のどれか すみません、
デスクトップの、helloフォルダに、
hello.pyがあって、
これを、コマンドプロンプトから実行したいのですが、
cd desktop\hello
これでフォルダまで行きましたが、
そのあと、python hello.py
とかいても、
SyntaxErrorとかがでていまいます、
どうやって書けばいいでしょうか? >>703
hello.pyの内容が間違ってるんじゃね どれどれ
オジサンにハローどっとパイを見せてごらん
ヒヒヒ >>704
ほんとだ!
間違ってた、無事に、Helloできました!
ありがとお >>699
たぶん質問者は、\n が1文字の改行コードを表すことを、知らないのだろう。
「\ n」の2文字だと考えているから、\ だけを消せると思っているのだろう
制御文字というのは、単なる決め事なんだよ。
\n は、1文字扱いで「\ n」の2文字に分割できない
\ n の個別の文字は存在しない。
\n という改行を表す、1文字しか存在しない!
そういうルール!
>>692
に書いておいた >>702
製品がサポートしてるpythonが2系
3系以降予定だけど一定期間は並行で動くから2で良いし…どうせ日本語ドキュメント出て来るのはもう少し後だし…
て経緯で一部2一部3でやってる
正直3のが書きやすいけど 色んなアプリに入っている「Pythonでスクリプト書けます」がまだ少なからずPython2だなあ 3が良いと思ったのは3.6からだな
3.5までのは書きにくい >>709 その可能性が高いな。 \' みたいなのが削除できないとか言ってたし。
\’ の\はエスケープ文字だから、実態は ' 1文字になることを知らないのだろうね。
ソース上は \' と書いても、変数の中では \みたいなエスケープ文字はなくなってるから幾ら探したって見つかるわけがない。 tkinterで.afterで自分自身を呼び出し続ける関数を使ってるwindowを閉じると
invalid command name "2615371636680xxxx" while executing
"2615371636680xxxx" ("after" script)
のエラーが発生します。
tkinterのループを抜けた(windowを閉じた)後に関数を呼び出してるからなのですが
回避する方法わかる方いませんか?
2件ほど海外で困ってる人は見かけましたが…よくわかりません。 盛大に使い方を間違ってるように感じるので
おまえのソース貼れ ソース貼ります
http://dpaste.com/1H9XHKT
ウインドウ閉じたらというか次のウインドウを開いたときにメッセージが出てるようです tkinterで、文字列の入力と編集が行えるテキストボックスへコードを使って文字を入れようとしました。
tkinter.Entry(root).insert(tkinter.END,"\a")と書くと、\aがテキストボックスに入るはずなのに、□のような文字化けした変な文字が入りました。
\aが正規表現か何かに判定されてしまったのでしょうか。
insertを使って\aをテキストボックスへ入れるにはどうしたらいいですか? ちなみに、環境はwindows10で最新版のpython3です。
\aとか\bをinsertを使ってテキストボックスへ入れようとした場合だけ変な文字化けします。一方、\Aや\cや\zの文字列はinsertを使ってそのまま忠実にテキストボックスへ入ります。
これって何ですか? \\aとすりゃーいい
\aは界隈ではアラームを示す
昔の汎用機やらタイプライターの横に付いてるベルがチーンと鳴ると思えばいい レスありがとうございます。
print("\007")とかprint("\a")とかで実行するとpc環境によってはビープ音が鳴る仕様みたいですね。 >>725
いくら未経験OKの現場でも、このスレでそんなこと質問しているような奴は使いたくないと思われる 質問させて下さい
Visual Studioでコードを書くと赤い波線が一部につく様になりました
該当の箇所を削除しても別のところに新しくついてしまいます
プログラムを実行すると
NameError:name”赤波の該当箇所”is not defined
と表示されます
print()を使った簡単なコードでも発生する様になってしまいました
特に設定を変えた様な事はないのですが、非常に困ってます
解決策分かる方はご教示お願いします >>720
ご丁寧にありがとうございます
エラーメッセージが出なくなりました
.after_cancelですか…初めて見ましたw >>727
指定されてる実行環境が壊れてたりしないか
新しくPythonインストールして、そこを実行環境に指定してみたら Hello Worldを出力するのは問題無くできました、すいません
質問の該当のエラーは
SyntaxError:invalid character in identifier
というものです 自己解決しました
コードの横にコメント記載していたのですが
そのコメントの列を揃える時に全角のスペースが混じってました
全てスペースを半角にすることで、問題なく動きました
スレ汚しスマソ >>731 良いってことよ、良くある話。
大抵は、: や’’ () などの対応ズレなどが多いな。 ここで質問していいか分からんのだが質問させて
ある並列処理をしていないプログラムを、複数のターミナルで同時に実行した場合のCPUの使い方ってどんな感じになる?
もしマルチコアの意味があるならいいCPU買おうと思うのだけど >>733
間違いなくスレ違いだけどコアの多いCPU買っていいよ
異なるターミナルで立ち上げたソフトウェアは特別なことがされてない限りプロセス単位で処理が走る
プロセスをどのCPUに割り当てるのかはOSの仕事でコアがたくさんあれば最近のOSは忙しくないコアに処理を投げてくれる シングルスレッド処理でCPUを100%使うプロセスならコア数分だけ並列実行したら単純にコア数倍早くなるよ
基本的にはマルチスレッドを使うよりもシンプルでスケールしやすいので好ましいやり方
元々並列化されているライブラリを使ってるなら速くならない場合もあるけど メモリ不足や同じディスクへのアクセスにも気をつけましょうね プルグラム動かして寝てたら、
メモリ不足で停止してた、
クラウドで動かしたほうがいいのかなぁ C++に移植してメモリ管理を自分でやる
昔懐かしの汎用機でタイムシェアリング……の亜種でも相手側のクラウドがよしなにしてくれるワケじゃない
メモリ不足になったら止めてくれる、ただそれだけ 実行環境の問題じゃない
どう考えてもプルグラムが悪い 長時間稼働させる場合にはPCに掛かる負荷も考えてプルグラム書かなきゃいけないしね Pythonで、二次元配列だけども要素数が異なる配列はどの様に作るのが良いのでしょうか?
例えば4列で要素数が4,3,2,1と一つずつ減ってく、以下の配列の作り方を教えてください
[[0,1,2,3],
[0,1,2],
[0,1],
[0]] 何がしたいのかは知らんけど、たぶん配列にする必要ないんじゃない? a = [0,1,2,3]
b = []
l = len(a)
for i in range(l):
____b.append(a[0:l])
____l -= 1 まぁ実際にやるとしたら[[x for x in range(i)] for i in range(4,0,-1)]でできる
やる必要性はわからない 馬鹿は必要性とか考えなくていいんだよ
アホみてーに俺の質問にだけ答えてろ >>731
全角スペースいれちゃうようなら
Ricty フォントの導入など全角スペースが見える方法模索したほうがいいな tqdmでプログレスバーを同じ行で更新するように表示させてるんだけど、途中から改行されて表示されるようになることがあるんだが何か理由知ってる人いないか?
パラメータはleave=Trueだけ設定してる状態 アナコンダぱいちんくんはアップデートすると
Spyderが動かなくなったりするから困るよ コンソールの最大幅とプログレの最大幅をconfig 空の__init__.pyの必要性って何?
検索トップに表示される内容がことごとく実際に動かした挙動と異なる。
情報が間違えてるか、情報が古いような気がする。
最新版で空の__init__.pyを入れる意味ってある? パッケージの対象範囲が3.3より新しい場合はなくてもいい
ただ__init__.pyありと__init__.pyなしでは厳密には違う動きをするので注意されたい
https://docs.python.org/ja/3/reference/import.html
公式ではない記事は夕刊ゲンダイ(ゴシップ紙)くらいの認識で読むこと 統計検定2級持ってる高卒だけどPython勉強すればAI系の仕事つけるかな?
HTMLとCSSとjsはある程度わかる
数学活かすレベルまで到達するのってやっぱり大変? >>756-757
公式もちゃんと書いてないような気がする・・・・
公式に書いてることを簡単に言い直せば、
3.2以前は__init__.pyがあることで、そのディレクトリがパッケージ化されてimportでき、
3.3以降は__init__.pyが無くとも、sys.pathを利用すればimportできる。
でも、__init__.pyが無くとも、sys.pathを利用しなくとも、下位のディレクトリはドットで指定すれば普通にimportできる・・・
空の__init__.pyがある場合だけインポートできるケースが見つけられない。 というかネットに限らず本もいい加減だな
「python文法詳解」というちゃんとしてそうな体裁の本を読んでるけど
「__init__.pyを置くことでそのディレクトリがパッケージ化されてimportできる3.2以前の方法に加えて、3.3以降ではsys.pathを利用する方法を追加した」と読める風に書かれてある。
でも__init__.py自体があっても無くてもインポートできるものはインポートできるし、インポートできないものはインポートできない。
3.2以前の方法は廃止されてパッケージ化に限っては__init__.pyが仕様変更されてるんと違うのか。 >>761
暗黙より明示とかカッコいいこと言っといてここら辺の仕様って恣意的で暗黙で覚えにくいよね… 公式は直訳だから抽象的だよな
直訳は元の英語文が持つ抽象性を極力維持したまま翻訳するし
翻訳することで日本文の抽象性も足される
だから直訳すると抽象的すぎてわけワカメになる
一方意訳は訳者なりの解釈を経て踏み込んで具体化されるから分かりやすい
直接的には書かれてないことを踏み込んで原語の意図を解釈するわけだから
原語の意図を読み間違えると「そこまでは言ってない」とか批判されることもあるが >>761
下位のディレクトリについては、実行時のカレントがsys.pathに追加されるのに気づいてないのでは コード提示されて質問されたらみんなダンマリになるからなw >>765
結局、3.7では、空にするぐらいなら__init__.pyなんか置く意味なくて
検索上位のサイトやpython文法詳解という書籍等に書かれている内容は嘘で、
import可否はsys.pathの登録のみに依存するということやね。
そして実行プログラムの下位ディレクトリもsys.pathに登録されてるため、ドットを使って記述すればimport可と。 最後のは別の解釈ができる文だったので訂正
そして実行プログラムの下位ディレクトリもsys.pathに登録されてるため、ドットを使って記述すればimport可と。
↓
そして実行プログラムのディレクトリはsys.pathに登録されてるため、実行プログラムの下位ディレクトリもドットを使って記述すればimport可と。 >>769
__init__.pyがあることで、初心者に特にありがちな、パッケージ名がコンフリクトした時に黙って動いたりしないメリットはあるよ
君みたいに早とちりでおっちょこちょいで過信が酷そうな人にはとても有用だよ つまり__init__.pyの存在意味がimportの可否という目的で説明されてるものが散見されるが、
それは嘘ということだね。 sys.path.append() は反則一発退場(白目) イテレータをキー毎に集計するのにsumみたいな関数で簡単に出来る方法あったらオジエテ
例えば ((1,10),(1,20),(2,30),(2,40)) → ((1,30),(2,70))
あるいは [["A":1],["A";2],["A":3],["B":4]["B":5:]] → [["A":6],["B":9]]
今はループで加算、キーが変わったら出力 という感じで古典的なやり方してます できました
from collections import Counter
c = Counter(A=1,B=10)
c.update({"A":2,"B":20})
print(c) #Counter({'B': 30, 'A': 3})
他にも応用できそうです ありがとうございます >>776 Ruby の$LOAD_PATH と同じだろ
load, require すると、ロードパスを先頭から順番に探索して、そのファイルを探す。
ただし、requireでは同じファイルは、2度以上読み込まないが、loadでは再読み込みする
環境変数$RUBYLIB に、パスを追加すれば、$LOAD_PATHの先頭に追加される >>775
# count以外にも応用の効くgroup by
# [("A", 1), ("B", 4), ("A", 2), ("A", 3), ("B", 5)] => [("A", 6), ("B", 9)]
from itertools import groupby
a = [("A", 1), ("B", 4), ("A", 2), ("A", 3), ("B", 5)]
result = [(key, sum(r[1] for r in rows)) for key, rows in
groupby(sorted(a, key=lambda t: t[0]), lambda t: t[0])] 「 echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile 」
「 echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile 」
「 echo 'eval "$(pyenv init -)"' >> ~/.bash_profile 」
「 source ~/.bash_profile 」
MacBookでPythonを始めようと思い、pyenvをインストールして設定したのですが、pyenvは必要ないことが分かりアンインストールしました
そしてその際に上記の4つのコマンドを入力したのですが、この設定を初期化する方法を教えていただけませんでしょうか
参考にしたのはこのページです、完全に失敗しました
https://prog-8.com/docs/python-env ■ このスレッドは過去ログ倉庫に格納されています