くだすれPython(超初心者用) その47【Ruby禁止】
■ このスレッドは過去ログ倉庫に格納されています
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
☆「Ruby では」「Rubyでは」をNGワード登録推奨
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。
★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
↓等のてきとうなソースコード用うpろだに貼ってきてください。
スクショをImgur等にうp といった 手抜き(クソ行為)禁止。
ttp://ideone.com/ デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/ まずまずシンプル。
ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try (旧try.jupyter.org)ちょっとめんどうそう
◆エラーを解決したい場合は、表示されてるエラー全文(勝手に省略禁止)と
実行環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと。
◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/
〇前スレ〇
くだすれPython(超初心者用) その46【Ruby禁止】
https://mevius.5ch.net/test/read.cgi/tech/1577948214/ >>203
プwww
典型的な日本のPGですね、君www GoogleやNetflixやDropboxはプロでもWEB系でもはなかった…? >>208
WEB系とはWEB技術を使って業務システムを作ること
オープン系の対義語
またそれらの企業は「他者の依頼によって開発」ではなくて自社開発
>>206
日本だったらこれが常識だよね
COBOL、VB、Javaが職業プログラマの基本
さらに言うならOracle、SQLServer、DB2も習得していると望ましい
Pythonって要するに日本でいうBASICと同じ立ち位置
例えば最も普及しているBASICであるExcelVBAがいくら便利でもそれで基幹システムつくらないよねって話
GoogleだってPythonはタスク管理程度にしか使ってない
大事なところは別言語(時代によって採用言語は変わるがPythonではない)
あと、よく言われるけどPepperもPythonじゃないからな
あれはユーザー側が簡易に制御できる言語としてPythonを採用してるだけだ >例えば最も普及しているBASICであるExcelVBAがいくら便利でもそれで基幹システムつくらないよねって話
これでド素人ということが分かった 基幹システムといえるかどうか微妙だが
情報システム部門で日報作るのにExcelマクロ必須だったな ExcelVBAで基幹システムって
作らないのではなく作れないし >>212
お前も210から見ればただのド素人
実は僕もなんですけど >>209
>Oracle、SQLServer、DB2も習得していると望ましい
ちょっと古いのでは?
今は postgreSQL >>212
作れない?
高くつくから作らないだけだろ
コストと日程くれるなら作るよ ガチればストアドプロシージャだけでも基幹システムは作れるゾ 12345678みたいな入力を\x78\x56\x34\x12に変換するライブラリってありませんか?
もしくは今そんな感じの自作モジュールを作ろうとしてて、
/usr/bin/mymodule/
以下にchange.py、その中に入れる関数の方のchange(s)まではできたんですが
from mymodule import change
change.change(s)
と毎回関数changeを呼び出す為に2回書かなきゃいけないのが気に入らないので
この関数changeを一発でimportする方法を教えてください
ワンライナーでも多用する予定なので、できる限りタイピングする文字数を小さくしたいんです >>211
全然微妙じゃなくて吹いたわw
Excel VBAで基幹システムって言ってるやつは
UI部分にExcelとVBAを使ってるって話だろ >>217
#include <time.h>
t = time();
などと2行書くものだと信じていたので、質問に驚きました。 >>219
あ、すみません後半のchange.change(s)みたいにファイル名と関数名を
一々書かなきゃいけない方が嫌なだけで、一行目のimportは当然OKです
python -c "import change(もしくはfrom 〇〇 import change);change(s)"
みたいな感じの物を実現したいです。 いまやPythonは基幹システムに使われるメジャー言語になっているから
職業プログラマが必死にPythonをやっているからな >>217
$ touch /usr/bin/mymodule/__init__.py
from mymodule.change import change
https://docs.python.org/3/tutorial/modules.html#packages >>222
ありがとうございます!
importのやり方普通のやつとfrom ~ import ~しか分かってませんでした、反省します 自分の周りでは少なくとも、治自体関係、医療関係(レセプト、電子カルテ等)、
運送・運輸関係の基幹システムをPythonで構築しているという話は聞いた事
がない。コールセンター(CTI、IVR等)関係のシステムをPythonで構築している
という話も聞いた事がない。
基幹システムをPythonで構築ではなく、基幹システムの一部の機能にPythonが
使われている場合があるという事なのか。
それとも情報系システムと勘違いしているのか。 フレッシュなニンニクジュースを飲めばコロナ菌は死滅する! COBOL、VB、Javaが、多重請負構造・奴隷土方プログラマの基本w
銀行側が払う料金
時給5千円 * 180時間 = 1人月90万円
その内、本人は20〜30万円ぐらいもらう。
その差額、60万円分で、数社の会社が成立できる仕組み
その60万円を多重請負構造で分ける
例えば、元請けのIBM(5大ITer)が30万円とって、
1次受けの上場企業が20万円とって、
2次受けの中小企業が10万円とって、みたいな土建業と同じの多重請負構造
就職面接へ行くと、1〜3次受けの会社員が皆来てるw
1次受けが雇うというと、2次も雇う、3次も雇うとなるw
奴隷売買業w
女衒みたいなものw
GitHub・Ruby みたいな自社サービス系とは全く違う!
学校で教えるのは、就職率が高い、Ruby ばっかりw
自社サービス系の方が、会社の倒産リスクは高いけど、
中間会社に抜かれないから、給料が高い それに銀行系は、システム更新時期が過ぎたから、仕事が無くなったw プロは複数言語使えるのが当たり前なんだからPythonが基幹システムに使われようが使われなかろうがどうでもいいだろ。
言語の特性上向いてない目的を挙げて特定の言語をdisすることになんの意味があるのかわからん。
他言語のコード書いてるときでも、データ変換やある程度決まりきったコードなんかはPythonで生成したりしてるが便利だよ。他言語で書いたアルゴリズムが間違ってないかの検証なんかにも使えるし。 生成や検証ってpython以外のP言語でも出来るんじゃねえの Haxe は、JavaScript, C++, C#, Java, JVM, Python, Lua, PHP, Flash に変換できる >>217
>>> binascii.a2b_hex('12345678')
b'\x124Vx'
>>> list(reversed(binascii.a2b_hex('12345678')))
[120, 86, 52, 18]
>>> bytes(reversed(binascii.a2b_hex('12345678')))
b'xV4\x12' >>217
structパッケージかな
from struct import pack
pack('<I', int('12345678', 16))
長いというならラムダ式でも使って
change = lambda s: pack('<I', int(s, 16))
と定義すれば
change('12345678')
で使える >>234
>>235
ありがとうございます、ただやりたいのは入力数値をそのまま\x78\x56……
みたいな方式に変えたいことで16進数に変換されるとちょっと不都合が
セキュリティ本のシェルコード挿入でそういう入力多かったので作ろうと思ったんですが
もしかして普通は上みたいな入力使う機会ないんですかね? >>236
\x78
は16進数で78のことを表している
16進数であることを明確にするにはH'78と記述する
プログラムでは0x78と書く
\x78\x56...みたいな16進バイト列を作りたいんだけど、16進数にされるとちょっと困る、と言われても、こっちも困る 要するにchange.change(s)って毎回書くのだるいからchange(s)って書くにはどうすればいいかってこと? https://dotup.org/uploda/dotup.org2096094.png.html
画像はbashですがこんな感じでAAAA\x78\x56……という文字列を出力したいんです。
って言おうとしてたんですがすみません、これの出力が
AAAAAAAAAA\x78\x56\x34\x12
になるとずっと思っていたんですが、嫌な予感がしたので今確かめたら
AAAAAAAAAAxV4
になってました
つまり>>234の方と>>235の方のやり方が求めていた者です、ありがとうございます。
初心者の勘違いでお騒がせをしてスレを汚してしまい申し訳ありませんでした……orz >>240
プログラムに組み込んでパイプで渡したいだけなら何もする必要はない
python -c "import sys; sys.stdout.write('AA\x12\x34')" | hexdump -C
結果
00000000 41 41 12 34 |AA.4|
コマンドライン引数でこの文字列を受け取った上で別のプログラムに渡す場合は、自分で作らないとない
python -c "import sys; sys.stdout.write(sys.argv[1])" "AA\x12\x34" | hexdump -C
結果
00000000 41 41 5c 78 31 32 5c 78 33 34 |AA\x12\x34|
\x12がH'12の1バイトではなく、H'5c783132の4バイトとして評価される def file_open():
data_path = fd.askopenfilename(
title="ファイルを選んでください",
filetypes=[("TEXT", "csv"), ("TEXT", "py"), ("HTML", "html")]
)
def main():
a=input()
if a!='1':
file_open()
を実行すると、VS CODEのウインドウの下に非アクティブでファイル選択ウインドウが立ち上がります。
ファイル選択ウインドウを再前側でアクティブウインドウとして立ち上げたいのですがどうすればいいのでしょう? if文ぬいて
def file_open():
data_path = fd.askopenfilename(
title="ファイルを選んでください",
filetypes=[("TEXT", "csv"), ("TEXT", "py"), ("HTML", "html")]
)
def main():
file_open()
とするとファイル選択ウインドウが最前面にきてアクティブになるんですよね
なんでだろう ああ、なんとなくわかってきました
input()
を使うと、VS CODEが最前面でアクティブのままロックされて、
そのウインドウの裏でファイル選択ウインドウが開くみたい
input()を使ってこの現象をさける方法ってありませんか? 連投すいません
data_path = fd.askopenfilename(
title="ファイルを選んでください",
filetypes=[("TEXT", "csv"), ("TEXT", "py"), ("HTML", "html")]
)
でファイルを開くときに、選択ウインドウを常にアクティブにする設定があれば教えて下さい
というのが、正しい質問でした
ご存知の方いらっしゃいましたら教えて下さい >>245
fd ってのが from tkinter import filedialog as fd なら
tkinter で topmost を指定してあげれば良いんじゃないかな?
https://teratail.com/questions/145112 >>246
解決しました!!!
ありがとうございます
もうわからないから、
print('この画面を最小化してね’)
とでもしようかと思ってたw 初歩的な質問ですみません。Colaboratory を使ってスクレイピング行っておりURLのみを表示させたいので
get使ったのですがAttributeErrorになってしまいます。
getを使わずa_tagsだけ入力するとエラーにならずに表示されます。
getが使えないのは何が原因なのでしょうか?
import requests
from bs4 import BeautifulSoup
page_url ="https://news.yahoo.co.jp/topics/top-picks"
r = requests.get(page_url)
soup = BeautifulSoup(r.text, features="html.parser")
a_tags = soup.find_all("a", class_="newsFeed_item_link")
a_tags.get("href") >>248
a_tagsはlistだから
listの各要素に対してget(‘href’)する必要がある >>248
Ruby, selenium-webdriver, nokogiri で作ったが、href を取得しようとすると、エラーになる。
sleep 15 して待っても、エラーのまま
要素は存在するけど、JavaScript で動的に、href を作っているのかも。
他から取得するか、クリックするなど、何かアクションを起こせば、作られるのかも
require "selenium-webdriver"
require "nokogiri"
options = Selenium::WebDriver::Chrome::Options.new
driver = Selenium::WebDriver.for :chrome, options: options
driver.navigate.to "http://news.yahoo.co.jp/topics/top-picks"
doc = Nokogiri::HTML( driver.page_source )
css_selector = "a.newsFeed_item_link"
elements = driver.find_elements( :css, css_selector )
results = elements.map { |elem| elem.attr( "href" ) }
puts results
driver.quit >>250
は、nokogiri を使わず(doc という変数を使っていなかった)、
selenium-webdriver から取得していたので、
それを、20秒スリープして、nokogiriから取得するように変えたら、25個のhref を取得できた!
require "selenium-webdriver"
require "nokogiri"
options = Selenium::WebDriver::Chrome::Options.new
driver = Selenium::WebDriver.for :chrome, options: options
driver.navigate.to "http://news.yahoo.co.jp/topics/top-picks"
sleep 20
doc = Nokogiri::HTML( driver.page_source )
css_selector = "a.newsFeed_item_link"
elements = doc.css( css_selector )
results = elements.map { |elem| elem.attr( "href" ) }
puts results.length, results
出力、以下が25個
https://news.yahoo.co.jp/pickup/6355533
https://news.yahoo.co.jp/pickup/6355534 すいません、ちょっと教えてもらいたいのですが
for x in ...
とかで文字を使っちゃうとまた次のforのときに
またx使うか迷うんですけどどうしてますか?
iみたいに毎回同じ文字使ってますか???
特に短いforがいくつもあるときに悩みます >>252
入れ子になってる等やむをえない事情がないのなら、
新たな文字など使わずに
むしろ
どんどんxなりiなりを再利用したまへ。
「どーでもいい?forループ回すときはいつもiな!」みたいな
俺ルールの徹底は
後日メリットばっかりだぞ。 >>252
ループ変数としてしか使わない前提なら可
ループ変数を他の用途に使い回すのは不可 >>254
そのルールでチェックできるlinterってない?
ループの外では使うのは気持ち悪いからやらないけど
セーフガードは持っておきたい >>259
m、lの順序が敢えて逆なのに意味はあるんけ? i, ii, iii, iiii
とかやっちゃうな 何だこのスレ?bad know how の集合知や〜 特定種類のファイルとかはtext, image, folderとか
それ以外で二重以上だと分かっている時はx,y,z,w
4重ループより複雑な時は実装がおかしい pythonでも高階関数使いまくったらいい感じにスッキリできるんかな
内包表記でええやんってなりそうだな >>265
> 特定種類のファイルとかはtext, image, folder
これもアリでんな
>>262
目が滑るからやめとこうぜ
>>266
ハッシュ・ド・カレーだっけ?www pythonやるために格安ノートPC買いたいんやけど必要スペックとかある? >>269
一番の問題はHDD容量だとおも。
俺のネットブックはHDDが64GBしかないから
あっぷあっぷしている。
無論CPUは速いほうがいいし、メモリも多いほうがいいのだが。
>>268
んじゃあ
老眼にキツイし、
そも、人間の指は同じキーを何度も打つのは苦手にできてるんだからやめとこうぜ >>265
x,y使うのは座標と分かっているときだけだなぁ。そのときは外側からt,z,y,x,(wかc) >>262
それやるぐらいならi1, i2, i3, …にするわ >>249
ありがとうございます。使い方が間違っていたんですね。再度調べてみます。
>>250
>>251
ありがとうございます。seleniumでも試す際に参考にさせていただきますね。 >>252です
ありがとうございます
自分なりにルールを決めたものを使っていくことにします。
forに変数いらないのあるなんて知らなかったです
助かります >>269
> pythonやるために格安ノートPC買いたいんやけど必要スペックとかある?
格安ノートはわりとすぐに使えなくなる。
無駄遣いになる危険性があるぞ?
PCには金を使え。
もしプログラマやデータサイエンティストになりたいなら。 別にクライアントサイドでプログラミングしなくてもいいんでないかい >>276
いまはやり?のビッグデータ解析とか
自然言語だの画像だのをみて、判別してくれるAIにちゃーれんじするなら、
自分のノートのスペックなんかより
ぶっちゃけ、契約するスパコンのスペックががが >>258
pythonにもperlの$_変数を導入しようって話か?
やっぱり変数宣言なんて不必要で、みんながみんな決められた記号を使えば、誰にも分かるコードが出来上がるじゃないか 無論prologにも無名変数として_が用意されてる
ttp://karel.tsuda.ac.jp/lec/prolog/intro2/
ならもう変数命名自体を排除した方がいいのでは ここってプログラム以前の問題もありですか?
私はターミナルを使うのにあまり慣れていません。
python2.7.3を使わなければならない用事ができました。
macでpyqt4を使おうと思いましたがインストールがうまくいっていないようです。
https://qiita.com/aical/items/2d066801a7464a676994の通りにしました。
ターミナル↓
hogenoMacBook-puro:~ hoge$ pyuic4
Traceback (most recent call last):
File "/Users/hoge/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/PyQt4/uic/pyuic.py", line 26, in <module>
from PyQt4 import QtCore
ImportError: No module named PyQt4
pyuic4を使うとインストールができたかどうか確かめられるとのことで使いましたが、
どうやらpythonが認識していないようです。
pyqt4がありそうに見えるのにno moduleと言われるので困っています。
これが現在の様子です
hogenoMacBook-puro:~ hoge$ python
Python 2.7.13 |Anaconda 4.0.0 (x86_64)| (default, Dec 20 2016, 23:05:08)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org >>282
PyQt4がインストールされていない
conda install pyqt=4
それでも出るようなら環境変数PYTHONPATHを設定してパスを通す
export PYTHONPATH=$HOME/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages >>284
ありがとうございます。解決しました。
conda install pyqt=4 はつい先ほどマニュアルを読んで実行したはずが
なぜか追加要素がたくさんあって驚きました。
それでも解決しませんでしたが、次にパスを通すことでうまくいきました。 一昨日こちらでスクレイピングの質問し回答を参考にさせていただいたものです。
エラーが起きなければ25件titleとURLが取得できると思うのですが、5件しか表示させず
IndexError: list index out of rangeとなってしまいます。
指定しているインデックスの問題だと思い番号をかえたりしてみましたが改善されません。何が原因なんでしょうか?
import requests
from bs4 import BeautifulSoup
page_url ="https://news.yahoo.co.jp/topics/top-picks"
r = requests.get(page_url)
soup = BeautifulSoup(r.text, features="html.parser")
a_tags = soup.find_all("li", class_="newsFeed_item")
data = []
for h1_tag in a_tags:
tmp_article_a_tag = h1_tag.find_all("a")[0]
title = tmp_article_a_tag.text
url = tmp_article_a_tag.get("href")
print("title:{} url:{}".format(title, url))
data.append([title, url]) >>287
Anacondaはシステムのライブラリが足りない場合でも動くので、そういう環境の人は使えると思うよ
例えばCentOS系でDockerが使えない場合、ライブラリが古い場合でも必要なライブラリはAnacondaがインストールするので新しいpythonが使える
他には機械学習関係でcudaやcudnn等のNvidia環境を構築するのは圧倒的に楽
バージョンの干渉で迷う事はほぼない
.bashrcや.zshrcにデフォルトでAnacondaを設定するとデフォルトのPythonと環境が違うのでトラブルの元になるけど、毎回sourceコマンドを叩くのも面倒なので利便性とのトレードオフかな venvみたいなめんどくさいことするならanaconda入れる方がよっぽど楽だけどね。
PATH設定くらいだからそこまで問題がわからなくなることが多いとも思わん。 condaに入ってないライブラリをpipで持ってきて地獄を見たことがあるから、最近はpoetry使ってる
今の主流はpipenvなのかな? conda使ってるのにpipで入れてる上になんか入らないやつ手動でsite-packageフォルダにコピーしてるけどダメなの? いい加減、ライブラリ・パッケージ管理ツールを統一して欲しいもんだが
次々と新しいものが出てくるばかりでどうにもならんな 追加で質問です
$conda install -c dan_blanchard pyenchant でインストールしようとしていますが、
10分経っても終わりません。なにかいい方法はないでしょうか。
Collecting package metadata (repodata.json): \ ←この棒がずっと回っている anacondaを使った理由はたまたまネットで見つけたページにそう書いてあったからです。
私はとあるソフトを使いたいだけでプログラミングについてはよくわかりません。 >>286
ブラウザの開発ツールでページ構造よく見てみ
5個ごとに入ってる広告がliの直下はaタグではなくdivになってるから ちょ、python最新版にしたらkerasが対応ついてきてなくて積んだww keras, ras, whatever will be will be. >>286
Ruby で作ったけど、最初の部分は省くけど、( >>251 を参照)
li.newsFeed_item の子孫のa は、29件で、li.newsFeed_item の直下のa は、25件。
Python のfind_all("a")[0] は、子孫も含めるのじゃないか?
出力は、こういう感じ
title:富士フ、アビガン治験開始へ3/30(月) 22:52 url:https://news.yahoo.co.jp/pickup/6355698
title:大連市 北九州にマスク20万枚3/30(月) 22:40 url:https://news.yahoo.co.jp/pickup/6355699
doc = Nokogiri::HTML( driver.page_source )
elements = doc.css( "li.newsFeed_item" )
# li.newsFeed_item の子孫のa は、29件
results = elements.map { |elem| elem.at_css( "a" ) }
puts results.length
results.each { |elem| puts "title:#{ elem.text } url:#{ elem.attr( "href" ) }" }
puts "------------------------------------"
# li.newsFeed_item の直下のa は、25件
ary = elements.each.each_with_object( [ ] ) do |elem, ary|
elem.children.each do |child|
if child.node_name == "a"
ary.push child
break
end
end
end
puts ary.length
ary.each { |elem| puts "title:#{ elem.text } url:#{ elem.attr( "href" ) }" } 昨日から学習始めました。
pandasで質問なんですが、このようなDataFrameがあるとして、
日付 スコア
2020-03-01 20
2020-03-02 15
2020-03-03 25
︙
↑これにカラムを追加して累積のスコアを取得したいです。
日付 スコア 累積
2020-03-01 20 20
2020-03-02 15 35
2020-03-03 25 60
︙
カラムの追加は出来ています。
データは長いものなんですが、forを使うんですかね?
それともちょうどいいメソッドみたいなものがあるんでしょうか?
くだ質ですけどよろしくお願いします。 この辺組み合わせろ
cumsum
Series
concat >>301
>>302
ヒントありがとうございます! 何度もすいません 環境書いてなかったので
mac mojave10.14.6 python2.7.3 anaconda で pyenchantを入れようとして
conda install -c dan_blanchard pyenchant を使ったものの
Collecting package metadata (repodata.json): / が数時間ほど出続けて一向に終わりません。
conda install pyenchantも試しましたが同じような結果でした。
IDEは多分xcordだと思います。 ■ このスレッドは過去ログ倉庫に格納されています