くだすれPython(超初心者用) その39 at TECH
[2ch|▼Menu]
[前50を表示]
500:デフォルトの名無しさん
18/10/15 21:29:43.28 E6pr56BO.net
 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。

501:デフォルトの名無しさん
18/10/15 21:35:11.02 E6pr56BO.net
 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。

502:デフォルトの名無しさん
18/10/16 17:08:42.26 u7YyW5Kg.net
自作クラスのインスタンスが持ってる変数を全て、保存しておいた値に戻すようなコードを書きたいのだけれど、どうやって書けばいいかな?
ある時点の値にロールバックしたいということなのだけれど、継承していてもちゃんと動作するようにしたい
想定している処理はこんな感じ
class A:
 def rollback(self):
   全部のインスタンス変数を self.backup の値に戻す
 def make_backup(self):
   self.backup = バックアップを作成
class B(A):
 def proc(self):
   self.make_backup()
   # なんか処理
   self.rollback()
設計が悪いと感じたらなにか代替案を教えていただければ嬉しいです

503:デフォルトの名無しさん
18/10/16 18:16:27.10 YLHbxnbG.net
pickle

504:デフォルトの名無しさん
18/10/16 18:24:52.10 LVmCdvc6.net
あの、プログラム終わったら次のプログラムを起動したいのですがどうやったら開けますか?
最後にはシャットダウンしたいです。
p1.py実行
→最後の行でp2.pyを呼び出す
→p2.py実行
...
→最後の行でpn.pyを呼び出す
→pn.py実行
→最後の行でシャットダウン
こんな感じでやりたいです。

505:デフォルトの名無しさん
18/10/16 18:28:08.45 YLHbxnbG.net
subprocess.Popen

506:デフォルトの名無しさん
18/10/16 18:32:15.10 LVmCdvc6.net
ありがとうございます、できそうです。

507:デフォルトの名無しさん
18/10/16 18:34:41.31 +Y6Wm7U2.net
パイパイを実行?

508:デフォルトの名無しさん
18/10/16 21:07:08.91 uMB0oNTu.net
>>479
それチェーンにしないとダメなの?
普通にp1.py, p2.py, ..., pn.pyを次々に呼び出して最後にシャットダウンするシェルスクリプトなり


509:バッチファイルなりを書けばいいような気もするんだが



510:デフォルトの名無しさん
18/10/17 11:21:44.01 tSH31TrF.net
>>477
グローバル変数使うんじゃだめ?

511:デフォルトの名無しさん
18/10/17 11:49:20.45 LtC7K5yP.net
ORM

512:デフォルトの名無しさん
18/10/17 12:47:48.23 tSH31TrF.net
>>477
>>484です。知ったかぶりしてすみません。グローバル変数ではなくクラス変数でした。
test.pyで
class MyClass:
  commonVALUE=0
  def __init__(self,initv):
    self.value=initv
  def p(self):
    print(f'instance value= {self.value}')
    print(f'class value= {MyClass.commonVALUE}')
  def bkup(self):
    MyClass.commonVALUE=self.value
  def bkload(self):
    self.value=MyClass.commonVALUE
としといて
>>> from test import *
>>> a=MyClass(100)
>>> b=Myclass(0)
>>> a.bkup()
>>> b.p()
instance value= 0
class value= 100
>>> b.bkload()
>>> b.p()
instance value= 100
class value= 100
この後で
>>> c=MyClass(-1)とあらたにインスタンスを作っても
>>> c.p()
instance value= -1
class value= 100
で、クラス変数は0にはならないみたい。

513:デフォルトの名無しさん
18/10/17 13:06:09.93 tSH31TrF.net
行数制限のため連投ですみません。
継承も大丈夫です。
>>> class B(MyClass):
...   def dec(self):
...    self.value-=1
>>> d=B(1)
>>> d.p()
instance value= 1
class value= 100
>>> a.bkup()
>>> d.p()
instance value= 1
class value= 100
>>> d.bkload()
>>> d.dec()
>>> d.p()
instance value= 99
class value= 100

514:デフォルトの名無しさん
18/10/17 13:31:27.53 LGIAN4QA.net
pickle

515:デフォルトの名無しさん
18/10/17 13:35:53.65 cWz6TRDk.net
>>486
それじゃクラス共通になってまうやん
インスタンス毎にバックアップデータ持てないから意図と違うと思う
>>477 で良いと思うけど、何を懸念してるのかを書くともっといい案をもらえそう

516:デフォルトの名無しさん
18/10/17 17:07:18.34 tSH31TrF.net
>>489
クラスと継承クラス共通でバックアップって意味じゃないの? そりゃスマンコってす
...
各インスタンスごとのバックアップを作って、一括でpush/popしたいなら、
リストの要素を各インスタンスをにしといて、
for i in in instance_list:
 i.backup()
とかにすればいいだけなんでねの?

517:デフォルトの名無しさん
18/10/18 10:08:35.95 0gY6dccD.net
>>490
push-popと言いながらプログラムはpush-popじゃないのはわざと?

518:デフォルトの名無しさん
18/10/18 16:41:15.03 551Ojw2f.net
def 関数(arg1,arg2):
ゴニョゴニョ

return ←これが全く理解できないんだけど、目からウロコみたいなページみたいなのないです?

returnが入ると全くわからない。

519:デフォルトの名無しさん
18/10/19 07:14:22.21 97FgwNUY.net
codecs.openて普通のopenより処理重いきがするんですが認識あってるかね?
2.7使ってて文字コード指定で100mb前後のtxtなりcsvてり触りたいんだけど通常のopenでは文字指定出来ず、ioモジュールのopen使うと他のライブラリで使ってるopenの挙動がおかしくなる(?)し、codecs遅いしでどうするのがスマートなのかわからん

520:デフォルトの名無しさん
18/10/19 08:17:42.62 5hJcbR3H.net
codecs.openを使う
そもそもopenに追加処理をしてるのだから、重くて当たり前だろう

521:デフォルトの名無しさん
18/10/19 12:51:38.13 jQ8EJjtV.net
> 488
URLリンク(youtu.be)

522:デフォルトの名無しさん
18/10/20 14:00:43.26 aYMp4dZA.net
URLリンク(github.com)
こちらのgitで公開されているLinux用epubビューアを改造して使いやすくしようと思っているのですが、
行き詰まってしまいました。
ブラウザの戻るボタンのようにリンク先(引用元など)に飛んだ後、直前に戻るボタンを実装したいのですが
(ボタンはgtk3の都合上up arrowボタンを使っています)
改造したのはheader_bar.pyでして、
def __populate_headerbar(self):
(途中省略)
# Adds up arrow chapter navigation button
self.up_arrow_button = Gtk.Button()
self.up_arrow_button.add(Gtk.Arrow(Gtk.ArrowType.UP, Gtk.ShadowType.NONE))
self.up_arrow_button.set_sensitive(False);
self.up_arrow_button.connect("clicked", self.


523:__on_up_arrow_clicked) navigation_box.add(self.up_arrow_button) (途中省略) def __on_up_arrow_clicked(self, button): """ Handles Up Arrow clicked navigation event, go backward :param button: """ if viewer.Viewer.can_go_back(): viewer.Viewer.go_back() とすると、 WebKit.WebView.can_go_back() takes exactly 1 argument (0 given) というエラーがでてしまいます。 (viewer.Viewerはwebkitを継承したものです) どなたかお知恵をお貸し願えたら幸いです。



524:デフォルトの名無しさん
18/10/20 14:07:46.36 u8BRF3D8.net
URLリンク(99blues.dyndns.org)

525:デフォルトの名無しさん
18/10/20 14:24:18.46 n6bj2eyU.net
>>496
インスタンスメソッドをクラスメソッドみたいにして読んでるから、第一引数として暗黙的に渡されるはずだったselfが足りないって怒られてる。
ソースを斜め読みするとViewerのインスタンスはインスタンス構造上の親であるMainWindowが持っているようなので、
self.__window.viewer.can_go_back()でアクセスできるんじゃないかな

526:493
18/10/20 15:04:15.12 aYMp4dZA.net
>>498
if self.__window.viewer.can_go_back():
self.__window.viewer.go_back()
と書いてやってみたらエラーメッセージはでませんでしたが画面が真っ白になってしまいました。
とはいえ、当初のエラーは解消したので大きな進歩です。どうもありがとうございました。
後は勉強がてら自分でやってみます。

527:デフォルトの名無しさん
18/10/20 15:04:58.12 aYMp4dZA.net
>>497
さんもレスありがとうございました。

528:デフォルトの名無しさん
18/10/20 18:30:22.23 V2vR4ZZl.net
>>492
defがここでおしまいですよ 呼び出し元にかえりんしゃー
という意味

529:デフォルトの名無しさん
18/10/20 18:31:25.93 V2vR4ZZl.net
>>493
from codecs import open as codecsopen
とかやって、
codecsまるごとじゃなくcodecs.openだけ読むようにすればちょっとははやくできる
ちょっとは。

530:デフォルトの名無しさん
18/10/22 23:03:44.42 bT6j7LGV.net
素人質問で申し訳ないのですが助けていただきたく質問します。
いま「みんなのPython」をやりはじめたのですが
Anacondaがうまくできません
最初に普通?のPythonをインストールして
そのあとにPythonをアンインストールしたあと
Anacondaをインストールしました。
そして「ファイル名を指定して実行」で「python.exe」と入力しても
「'python.exe'が見つかりません」となってしまいます。
Windows PowerShellで「>python」と入力しても
「用語 'python' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません」
となってしまいます。
Anacondaのインストールでは
「Add Anaconda to my PATH environment variable」にはチェックは入れてません
「Register Anaconda as my default Python 3.6」にはチェックを入れました。

531:デフォルトの名無しさん
18/10/22 23:37:57.82 aY20u7RH.net
英語よめや。

532:デフォルトの名無しさん
18/10/22 23:54:05.62 bT6j7LGV.net
>>504
環境変数PATHを設定する | Pythonインストールと環境設定
URLリンク(www.javadrive.jp)
このサイトに書いてあるようにやったらできたんですけど
これでいいんですか?

533:デフォルトの名無しさん
18/10/23 01:14:29.19 uxH9lXGD.net
カレントフォルダからは「相対パス/python.exe」で実行できる。
カレントフォルダ以外からも実行したいのなら「絶対パス/python.exe」で実行できる
カレントフォルダ以外からも「python」というコマンドで実行したいのなら、
「python.exe」のあるフォルダを、ユーザー環境変数PATH に登録しないといけない
例えば、コマンドプロンプトで、以下のように入力すると、
where notepad
where python
そのコマンドの実行ファイルのある、場所を表示できる

534:デフォルトの名無しさん
18/10/23 06:47:31.22 EmL9QD5v.net
はじめまして ラズパイでpythonを利用してます。
Python3 ide?でファイルを実行するとmoduleエラーが起


535:きるんですけど、lxterminalで実行したりcronで実行するとエラーはでないで実行できます。 実行できるので問題ないのですが、なんでpython3 ideで実行するとmoduleエラーになるのかが気になります 詳しい方 お気づきがあれば教えてください



536:デフォルトの名無しさん
18/10/23 07:07:12.22 EmL9QD5v.net
追加ですが温度センサー使ってます。githubからすべて入手したものです。
ググってもなぜかエラー出るよみたいなことが書かれていて原因は不明だったのでお聞きしました。

537:デフォルトの名無しさん
18/10/23 10:24:36.04 d2CNB2CT.net
Python3でのsqlalchemyについて教えてください
URLリンク(ideone.com)
56行目のsession.commit()でエラーになってしまいます。
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) CHECK constraint failed: winners
[SQL: 'INSERT INTO winners (name, category, year, nationality, sex) VALUES (?, ?, ?, ?, ?)']
[parameters: ('Marie Curie', 'Chemistry', 1911, 'Polish', 'Female')] (Background on this error at: URLリンク(sqlalche.me))
こんな風に書かれてあります。(長いのでここに書くときに改行しました)
何がいけないのでしょうか?

538:デフォルトの名無しさん
18/10/23 10:29:07.79 ki4w8hD+.net
>>507
同じPythonを実行してる?(公式の純正PythonとAnacondaとか)

539:デフォルトの名無しさん
18/10/23 10:35:04.61 ki4w8hD+.net
>>509
yearはStringじゃなくてIntegerじゃ…?

540:デフォルトの名無しさん
18/10/23 10:40:12.34 d2CNB2CT.net
>>511
ほんとだ!あと、リストのMarieの性別も頭が大文字になってました。
凡ミスなのにありがとうございます!

541:デフォルトの名無しさん
18/10/23 10:45:40.79 d2CNB2CT.net
>>509
あと、29行目の%の所でpep8のE228の注意が出てしまいます。
%の前後にスペースを入れて、こう書くのが正しいんでしょうか?
URLリンク(ideone.com)

542:デフォルトの名無しさん
18/10/23 10:48:34.83 ki4w8hD+.net
>>513
その方がpep8に則ると正しいね

543:デフォルトの名無しさん
18/10/23 10:56:47.49 zGwQ/J/L.net
>>514
どうもありがとうございました

544:デフォルトの名無しさん
18/10/23 11:09:52.98 zGwQ/J/L.net
連投すみません
SQLAlchemyでのデータベースへのアクセスについてですが、filterとfilter_byってどう使い分けするんでしょうか?
違いが分からないです
# スイス人受賞者の取得
# filter_by の場合
result = session.query(Winner).filter_by(nationality='Swiss')
# filter の場合
result = session.query(Winner).filter(Winner.nationality == 'Swiss')

print(list(result))

545:デフォルトの名無しさん
18/10/23 11:13:00.78 aeA+1VC2.net
gtk3とpythonのpygobjectで質問があります。
URLリンク(stackoverflow.com)
こちらの質問にあるとおり、webkit2gtkを使うとlibwebkit1-3.0の時のようなタッチスクリーンによる
スクロールができなくなってしまうのですが、何とかタッチによるスクロール(パンというようですが)
をしたいのです。こちらの質問者の方はコールバック関数にスクロールイベントを書いたらできたと
書いてありましたが、具体的にはどのように記述すれば良いのでしょうか?
URLリンク(lazka.github.io)
こちらのpygobjectのAPIを見てもよくわかりませんでした。どうかよろしくお願いします。

546:デフォルトの名無しさん
18/10/23 11:16:03.36 zGwQ/J/L.net
>>516ですけど、
ふた通りの書き方があるよ、Pythonらしく、より簡単に書く方法はfilter_byの方だよって事ですかね?

547:デフォルトの名無しさん
18/10/23 12:43:50.18 EmL9QD5v.net
>>510
同じpythonです。ラズパイにはじめからはいってるやつです。
ほんと謎
パスかなと思ったけど動いてるから違うんやとおもうけど

548:デフォルトの名無しさん
18/10/23 13:18:18.96 ki4w8hD+.net
>>518
軽くググッてから投稿してみよう
URLリンク(stackoverflow.com)

549:デフォルトの名無しさん
18/10/23 13:20:20.07 ki4w8hD+.net
>>519
バージョンも同じなら、理由はわからんなぁ…

550:デフォルトの名無しさん
18/10/23 17:07:59.89 J7zWeAP4.net
みんなやさしいな

551:デフォルトの名無しさん
18/10/23 18:06:12.08 Afmb5nM2.net
別のフォルダに入った同名ファイルをjoblibのParallelで処理するために以下のようなコードを書いたところ1番目のフォルダの結果が常に出てきてしまうんだけど原因分かる?
・環境
Python: 3.7.0
joblib: 0.12.5
Jupyter Notebook上で実行
・ファイル
C:\a\a.txt -> 「1」とだけ半角で書かれたテキストファイル
C:\b\a.txt -> 「2」とだけ半角で書かれたテキストファイル
・コード
import numpy as np
from joblib import Parallel, delayed
# 実際はもっと大容量のファイルに対して重い処理を行う
def read_file():
return np.loadtxt("a.txt")
os.chdir(r"C:\a")
result1 = Parallel(n_jobs=-1)(delayed(test)() for _ in range(1))
os.chdir(r"C:\b")
result2 = Parallel(n_jobs=-1)(delayed(test)() for _ in range(1))
# 空のフォルダcに移動する
os.chdir(r"C:\c")
result3 = Parallel(n_jobs=-1)(delayed(test)() for _ in range(1))
print(result1) # 出力 : [array(1.)]
print(result2) # 出力 : [array(1.)]・・・[array(2.)]が出力されないのはなぜ?
print(result3) # 出力 : [array(1.)]

552:デフォルトの名無しさん
18/10/23 22:14:21.56 86mV9f+c.net
ファイルの数を返すメソッドはありますか?
例えばsrcの下にディレクトリaとbがあって
それぞれのディレクトリにa1.txt〜a100.txt、b1.txt〜b100.txtとファイルがあった時に
200と返してくれるメソッドはありますか?
defで関数とか作らず1行で済む方法を探しています。

553:デフォルトの名無しさん
18/10/23 22:22:44.49 zYWUn764.net
len(os.lisdir(ディレクトリのpath))

554:デフォルトの名無しさん
18/10/23 22:36:02.00 BDP8ufz9.net
いまやってみたらそのコードでは2が帰って来ました
aとbの2つのディレクトリがあるから2なのですかね?
欲しいのはそのまた下にあるファイルの数でした

555:デフォルトの名無しさん
18/10/23 22:46:04.08 oFF/C26V.net
Pythonは詳しく無いけど、そう言うは再帰でディレクトリが無い最下層まで潜るコードってよく見るね。

556:デフォルトの名無しさん
18/10/23 23:35:56.37 EZC/vVVW.net
>>524
import glob
len(glob.glob(“**/*”, recursive=True))

557:デフォルトの名無しさん
18/10/23 23:36:52.55 EZC/vVVW.net
src/**/* だったわ

558:デフォルトの名無しさん
18/10/23 23:53:26.39 BmpWcPqj.net
>>524
sum([len(files) for root, dirs, files in os.walk("src")])

559:デフォルトの名無しさん
18/10/24 00:12:08.40 2LYWqLo0.net
>>507
パス・カレントディレクトリとか、起動時オプションとか。
別の実行ファイルを起動しているとか
IDE の前提条件は、プロジェクトごとだろ。
プロジェクトフォルダ・プロジェクト設定ファイルありきだろ。
プロジェクトの条件を満たしていないのかも?
プロジェクトとシェルから実行する形式とは、異なるような気がする
そのエラーメッセージをここにも書いて、それで検索すれば?
>>516-520
「python sqlalchemy filter vs filter_by」で検索!

560:デフォルトの名無しさん
18/10/24 00:33:01.65 2LYWqLo0.net
>>524-530
ls -1UR | wc -l
「linux ファイル数 ディレクトリごと」で検索!

561:デフォルトの名無しさん
18/10/24 00:58:29.86 2LYWqLo0.net
>>517
「gtk webkitwebview」で検索!

562:デフォルトの名無しさん
18/10/24 15:19:12.25 B3/hQHxI.net
521,523です
教えていただいたのをやってみました。
525さんの方法は、フォルダーの数が含まれていました。結果は202が返りました。
527さんの方法は、ちょうど200が返りました。
529さんの方法は、windowsなので出来ませんでした。
これにて問題は解決しました。皆さまありがとうございます。

563:514
18/10/24 17:55:05.58 Vc8wznQf.net
URLリンク(webkitgtk.org)
>Note that WebKitWebView is scrollable by itself, so you don't need to embed it in a GtkScrolledWindow.
って書いてありました。スクロールをGtkで担当していないから、他のgtk3アプリのようにタッチでスクロールできないようです。でも、だったらなんで>>517のリンク先の人はGTK.gestureでできたんだろう・・・

564:デフォルトの名無しさん
18/10/24 18:10:34.94 95IsyUjL.net
>なんといっても、800g弱とは思えない軽さと、
薄型コンパクトな筐体はタブレットと同様に、
「出番はないかもしれないけど常時携行しても良い」レベルです。

いざ使おうとすると windows update が始まって再起動…何時間も待たされる…鞄にしまう。

放置

「出番はないかもしれないけど常時携行しても良い」

また持ち出す

いざ使おうとすると windows update が始まって再起動…何時間も待たされる…鞄にしまう。

放置

565:デフォルトの名無しさん
18/10/24 18:40:13.35 IR3xnlxd.net
リストにn個の要素があります。
このリストの要素から2個をランダムに選んだペアをm組作りたいです。
ただしペアを重複しないようにしたいのですが、
どうすれば実装できるでしょうか。もしくはライブラリがありますか?
いくら考えてもペアが重複してしまいます。(特に(a,b)と(b,a)のようなペアが出来てしまいます)
n=[1, 2, ... n]
m=3
new_n=f(n, m)
new_n
=[(1,8), (45,n), (n-2, 20)]
みたいになるfを探しています。

566:デフォルトの名無しさん
18/10/24 18:54:46.79 Uqd3UckS.net
>>537
itertools

567:デフォルトの名無しさん
18/10/24 18:57:07.94 K3Hn81Y7.net
リストの中身をシャッフル→前から二つずつ取得

568:デフォルトの名無しさん
18/10/24 18:57:08.14 Uqd3UckS.net
>>535
ここで回答を待つよりリンク先に直凸したほうがはやいきががが
Why could you "scroll" with GTK.gesture?

569:デフォルトの名無しさん
18/10/24 19:10:02.77 TphPHDjb.net
scrapyとXParhについて教えてください
URLリンク(ideone.com)
うまく動いてくれないです。
67行目からの関数が間違えてると思うんですが、77行目のp_templateはどう書くのが正しいんでしょうか?
9行目は
# URLリンク(github.com)
17行目は
BASE_URL = 'URLリンク(en.wikipedi)


570:a.org' 40行目は start_urls = ["https://en.wikipedia.org/wiki/List_of_Nobel_laureates_by_country"] 80行目は # https://www.wikidata.org/wiki/Q155525 です。



571:デフォルトの名無しさん
18/10/24 19:14:14.74 IR3xnlxd.net
>>538
これは指定した組み合わせ数に達


572:したら中断する方法はありますか? 実際にはnとmが両方4000程なので、nC2を全て取得するのは冗長と思われるので・・ とはいえやりたいことにとても近いのでありがとうございます。 >>539 実際にはm>n/2となるので難しいと思いました。 すみませんこちらの例題が悪かったですね・・



573:デフォルトの名無しさん
18/10/24 19:14:37.21 /bxb9sB2.net
>>537
itertoolsとrandom


574:.sampleを組み合わせる import itertools, random def pair(n, m): combi = list(itertools.combinations(n, m)) return random.sample(combi, m)



575:デフォルトの名無しさん
18/10/24 19:51:07.40 8aeYqShI.net
>>509
これ、モジュールを入れてますが、ideoneで外部モジュールってどうやって使うんです?

576:デフォルトの名無しさん
18/10/24 20:02:29.89 Uqd3UckS.net
>>542
いつでもやめれるぞ
おれはあほだから
count=0からカウントアップしていって
欲しい組数になったらbreak
とか思いつくが
もっとスマートなやり方あるとおもう

577:デフォルトの名無しさん
18/10/24 20:03:01.03 Uqd3UckS.net
>>544
ソースが貼れるだけで
外部モジュールをとってきて動かすまではideoneしてくれない

578:デフォルトの名無しさん
18/10/24 20:26:18.89 Uqd3UckS.net
>>541
大抵は日付Gregorianで書いてあるとおもうから
文字列Gregorianの 前の文字列を探したらよさげなんだが
80行目のアドレスにアクセスして見てみた
Xpathがもはや538が書いたソースと違っつる
(/html/body/pre/span[1577] ってなってて divに1ツも入ってないYO)ので
具体的にどうとは書けない

579:デフォルトの名無しさん
18/10/24 23:59:09.70 2LYWqLo0.net
wikipedia みたいに、しょっちゅう構成が変化するものを、
XPath みたいに順番で指定するものは、動かない
div[2]/div[1]/div/div[2]/div[2]/div[1]
「div の3つ目の、div の2つ目の...」
CSS セレクターみたいに、id, class などの意味で指定する方が、構成の変化に強い。
まだマシ
HTML を解析して、id, class などで限定していくのが基本

580:デフォルトの名無しさん
18/10/25 01:12:10.66 33Q6k0An.net
今日突然プログラミングに興味を持ちとりあえずpythonをインストールした初心者です。
連番を作成するとき range(10)と打ち込んでも結果がrange(0,10)になってしまいます
解説サイトを見ると9まで表示されるらしいのですが、なぜrange(0,10)になってしまうのでしょうか?
バージョンは3.7.1です

581:デフォルトの名無しさん
18/10/25 02:20:57.87 NT+vxu3F.net
>>549
解説サイトがpython2向けだから。
別のサイトを見つけましょう

582:デフォルトの名無しさん
18/10/25 02:27:15.39 ZE3NVml1.net
Ruby の範囲は、 終端を含む、.. と、含まない ... がある
0..3 → 0〜3
0...3 → 0〜2
python では、終端を含まないのかな?
推測だけど、range(10)と引数が1つの場合は、終端のみが指定されたとみなすのだろう。
その場合、始端は0 が指定されたのと同じ
つまり、range(0,10)と同じ

583:デフォルトの名無しさん
18/10/25 07:58:15.11 ANca8D/1.net
>>547
538を書いたのは昨日だけど、今試しても80行目のアドレスのdate of birthのXPathは
//*[@id="P569"]/div[1]/div/a
8 October 1927の部分のXPathは
//*[@id="q155525$82312275-D23F-4048-A710-6EC6AB12C2C2"]/div[2]/div[1]/div/div[2]/div[2]/div[1]
でしたよ
>>547
>>548
583のスクリプトだと誕生日、死亡日、出生地、死亡地、性別を77行目の天ぷらで取得するようになってるけれど、もう天ぷらを改変して使うことも無理だから、項目一つ一つそれぞれ取得しないといけないって事ですか?

584:デフォルトの名無しさん
18/10/25 08:09:34.19 ANca8D/1.net
URLリンク(www.wikidata.org)
この表の左側(date of birthとかplace of birth)のdiv classは
wikibase-statementgroupview-property-label
表示の真ん中の8 October 1927や、Bahía Blancaのdiv classは
wikibase-snakview-value wikibase-snakview-variation-valuesnak
のようでした。
これらを使って >>583 に当てはめる事できますか?

585:545
18/10/25 08:57:54.49 ZE3NVml1.net
例えば、Ruby で、5ch の書き込み内のa タグを、XPath で指定するのは、こういう感じ
# a を含む、post_node だけを抜き出す。descendant は子孫、ancestor は祖先
# div.thread > div.post > div.message > span > a
post_nodes = doc.xpath "//div[@class='thread']/div[@class='post']/div[@class='message']/descendant::a/ancestor::div[@class='post']"
/div[2]/div[1]/div/div[2]/div[2]/div[1]
こういう、1, 2 などの順番では指定しない
順番で指定すると、サーバー側で、HTML ページを作る時に、順番が変わるかもしれない
普通はXPathではなく、以下のような、CSS セレクターで指定する。
div.thread > div.post > div.message > span > a
thread クラスが付いた、div 要素の直下の、
post クラスが付いた、div 要素の直下の、
message クラスが付いた、div 要素の直下の、
span 要素の直下の、a 要素
ブラウザのF12 開発者ツールを起動して、自分でHTMLを解析する

586:545
18/10/25 09:17:05.90 ZE3NVml1.net
Chrome で、自分が解析したい要素上で、右クリックメニューで検証を押すと、F12 開発者ツールが起動する
表示されたHTML 上で、右クリックメニューでCopy の所から、
XPath, selector(CSS selector)をコピーできる
例えば、このスレの書き込み内のa タグを、検証してみると、
XPath, CSS selectorは、
//*[@id="550"]/div[2]/span/a[2]
550 > div.message > span > a.reply_link
id が550 の要素の直下の、
message クラスが付いた、div 要素の直下の、
span 要素の直下の、
reply_link クラスが付いた、a 要素
ただし、id は550など、先頭文字が数字では始められないから、これは間違い。
5ch の開発者が間違っている。バグ

587:545
18/10/25 09:39:35.73 ZE3NVml1.net
date of birth の、XPath, CSS selectorは、
//*[@id="P569"]/div[1]
#P569 > div.wikibase-statementgroupview-property
id がP569 の要素の直下の、
wikibase-statementgroupview-property クラスが付いた、div 要素
このCSS セレクターで要素を取得して、それが1つだけかどうか確認しないといけない。
このHTML の製作者は、このクラスを複数のタグに付けているかもしれない
このように、他人が作ったHTMLを、解析していくのが難しい。
その仕様は、その製作者が決めたもので、我々が知らないものだから、
隠された情報を暴くのに、時間を食うから、非常に無駄!
仕事以外で、他人の仕様を解析するのは辞めた方がよい。
製作者は答えを知っているけど、我々は答えを知らないから、時間ばかり食う!

588:デフォルトの名無しさん
18/10/25 09:43:11.50 wiUcTcgZ.net
たまにはいいこと言うじゃねえか

589:デフォルトの名無しさん
18/10/25 10:14:40.95 yIJtoQcC.net
今は1階層深くなっているようだ
//*[@id="{code}"]/div[2]/div/div/div[2]/div[1]/div/div[2]/div[2]/div[1]{link_html}/text()

590:デフォルトの名無しさん
18/10/25 10:21:59.94 Rw/1mEHp.net
>>556
なるほど
まだ途中までしか読んでないけどおそらく本の内容はこんな感じ
1
ウィキペディアにある現在までのノーベル賞受賞者の全員の一覧からウィキデータにある各人のパーソナル情報とウィキペディアの各人の概略と人物写真をScrapyでスクレイピング
2
そのデータをPandasとMatplotlibでクリーニング、分析
3
そのデータをFlaskを使って配信
4
そのデータをJavascriptのD3.jsで可視化
4の可視化に興味があって読み始めた感じ。けどせっかくなので1から読んでScrapyも学んでみようかと。
でも、他人が作ったサイト(ウィキペディア)で悩むよりもAPIなどで簡単に取得出来るような別のデータを使って2に進んだ方がよいですか?
(幸い、本の著作のGithubは数年前にすでにスクレイピングしたデータが置いてありました。数年前なのでもちろん今年の本庶さんは含まれてないですけどね。)

591:デフォルトの名無しさん
18/10/25 10:22:45.04 Rw/1mEHp.net
>>558
それどうやって見つけたんでしょうか?
ちょっと見てみます。

592:デフォルトの名無しさん
18/10/25 10:43:07.24 Rw/1mEHp.net
URLリンク(i.imgur.com)
date of birthのところでコピーしたXPath
//*[@id="P569"]/div[1]/div/a
URLリンク(i.imgur.com)
その日付けのところでコピーしたXPath
//*[@id="q155525$82312275-D23F-4048-A710-6EC6AB12C2C2"]/div[2]/div[1]/div/div[2]/div[2]/div[1]
2枚目の画像の部分を選ぶんだと思っていたんですけど、もしかして選ぶ場所間違えてますか?

593:545
18/10/25 11:01:29.24 ZE3NVml1.net
>>559
その本の例題が難しすぎる。
自分で他人のHTML を解析してまでやる必要はない。無視すべし
自分のやりたい部分だけを、やった方がよい

594:デフォルトの名無しさん
18/10/25 11:34:29.89 yIJtoQcC.net
>>561
目的地点はあってるが出発地点が違う
もうちょっとソースを読んで、どういう風にXPathをテンプレート化しているかを理解しよう

595:545
18/10/25 12:03:03.26 ZE3NVml1.net
date of birth の、XPath, CSS selectorは、
//*[@id="P569"]/div[1]
#P569 > div.wikibase-statementgroupview-property
id がP569 の要素の直下の、
wikibase-statementgroupview-property クラスが付いた、div 要素
place of birth の、XPath, CSS selectorは、
//*[@id="P19"]/div[1]
#P19 > div.wikibase-statementgroupview-property
id がP19 の要素の直下の、
wikibase-statementgroupview-property クラスが付いた、div 要素
ここで、id のP569, P19 みたいなものは、別のHTML から取れるのか?
だったら、CSS セレクターで取れる
XPath なら、div[1] とか番号指定よりも、class 指定の方がよい。
//*[@id='P569']/div[@class='wikibase-statementgroupview-property']
//*[@id='P19']/div[@class='wikibase-statementgroupview-property']

596:デフォルトの名無しさん
18/10/25 12:21:08.82 Rw/1mEHp.net
>>563
出発地点ですか!
例えば「8 October 1927」という文字の上で右クリックして検証を選んで出てくる開発者ツールのElements欄を見てるんですが、もしかしてそこから間違えているとかですか?
> もうちょっとソースを読んで、どういう風にXPathをテンプレート化しているかを理解しよう
どういう事なのかさっぱり分からないです…
>>563
>>564
そういう知識はどこで身につけるんでしょうか?
おそらくこれはPythonとは直接関係ない部分なのでPythonの本でもそんなに詳しくは書いてないのかと思います。
これらはWeb開発の知識でしょうか?
ほんのちょっとだけどPythonは覚えたから大丈夫だけど、Webは分からないから暗号にしか見えず恐ろしいです。
なるべくWeb開発をしなくてもいいように(ほんとはWebは専門の人に任せようって)、Web開発の部分はなるべく最小限で済むようにして、みなさんがPythonとJavascriptのプログラミングに専念してシングルページアプリを作れるようにってのがこの本らしいけれど、
XPathやChromeのこのツールやdivとかクラスっていうものの知識ってどういうところ(本?サービス?言語?)で学ぶといいんでしょうか?結局はやはりWebの知識が必要になってくるんでしょうか?
途中、SVGでグラフィックを作る章の最初にHTMLとcssの基本的な事が書かれてありましたけれど。

597:545
18/10/25 13:36:59.66 ZE3NVml1.net
先に、JavaScript, jQuery で、CSS セレクターを学ぶ。
CSS セレクターの方が読みやすい。
入門用サイトでも見て
HTML で、CSS デザイン用の属性、id, class などを付けるでしょ?
それを手掛かりにして、要素を取得する
XPath は後でよい。
入門用サイトを見る

598:デフォルトの名無しさん
18/10/25 14:08:58.54 JjKr6ouj.net
URLリンク(i.imgur.com)
>危険なWeb開発地帯
自分もこの認識
恐ろしい
>>566
早く先に進


599:みたいけれど、一旦Pythonは横に置いて、そういう学習してみます。 プログラミング言語としてのJavaScriptではなくWebで使うためのJavaScriptという位置付けで学ぶとcssなど理解できるようになるんですかね? あと、JavaScriptのスキルを身に付けたいならフレームワーク(jQueryなど)の存在は完全に無視すべきとありました。



600:デフォルトの名無しさん
18/10/25 14:10:23.63 f1dgb8e7.net
Python少し触っただけの初心者です。
インデント位置が変わるだけでプログラムのロジックの意味が
変わるのを知ってビックリしているのですが、
そんな言語を使ってまともなプログラムを書けるのですか?

601:デフォルトの名無しさん
18/10/25 14:13:05.16 JjKr6ouj.net
>>568
初心者ですけど、逆に分かりやすいと思いました。

602:545
18/10/25 1


603:4:20:16.10 ID:ZE3NVml1.net



604:538
18/10/25 14:29:40.72 JjKr6ouj.net
>>570
まさにこの本がPython学習者がデータの可視化に向けてJavaScriptを学ぶのにちょうどよい本だと思って手に取ったんですが…

605:デフォルトの名無しさん
18/10/25 15:37:48.62 5Cy/pQlU.net
最近裾野が広がって初学者が増えたのは良いが
FAQはどっかでまとまったの見ておくべき

606:デフォルトの名無しさん
18/10/25 15:45:19.08 K87hu2sk.net
>>568
同じ処理なら誰が書いても同じようなコードになる

607:デフォルトの名無しさん
18/10/25 16:04:24.36 g7JlCOxC.net
Python始めたての初学者です。
ファイルを読み込んで、バックアップをとってから、ファイルの一部を書き換えるというプログラムを書きました。
これをPython3.6.1環境のLinuxで実行すると、うまく動きましたが、2.7.5環境の別マシンでは、
TypeError: 'encoding' is an invalid keyword argument for this function
というエラーを吐き実行できませんでした。さらに、2.5.2環境の別マシンでは
AttributeError: 'str' object has no attribute 'format'
というエラーを吐き、実行できませんでした。
Python2と3では互換性がないということは存じ上げていますが、今回、3.6.1、2.7.5、2.5.2のすべての環境で動くものを作りたいです。
おそらくopenのencodingの部分と、datetimeの部分のformatの書き方がだめなんだと思いますが、
全バージョン対応の書き方をしようと思うとどういった形になるのでしょうか。
ちなみに、以下がコード全文です。
URLリンク(pastebin.com)

608:デフォルトの名無しさん
18/10/25 16:27:15.45 5Cy/pQlU.net
無駄な抵抗はよせ

609:デフォルトの名無しさん
18/10/25 17:20:42.65 YZYAqGHb.net
>>565,567
Pythonは詳しく無いので恐縮ですが、
>プログラミング言語としてのJavaScriptではなくWebで使うためのJavaScriptという位置付けで学ぶとcssなど理解できるようになるんですかね?
CSS(スタイルシート)はWebページの見た目を制御するためのものです。
HTMLの要素ごとに、サイズ、背景、フォントの種類、レイアウトなどをCSSで指定する。
HTMLの要素は、タグ、属性、値で構成される。divはタグ、id, classは属性。
よって、CSSを覚えるには、HTML+CSSのセットで覚える必要がある。
今だったら、HTML5+CSS3
さらに、HTMLの要素を操作して表示を変化させるにはJavaScriptを使う。
ホスト側で処理が必要な場合は、CGI(GET,POST)などの知識も必要。
Webページ(HTML)の解析をするのであれば、HTML+CSSの知識は必須と思う。

610:デフォルトの名無しさん
18/10/25 18:16:58.93 g7JlCOxC.net
>>575
抵抗させてください

611:デフォルトの名無しさん
18/10/25 19:39:32.30 Mzrh8O3p.net
まず2.5の文法だけで2.5で動く奴を書け

612:デフォルトの名無しさん
18/10/25 19:56:43.69 NF5xn3mp.net
>>578
なに偉そうに命令しとるんじゃ
しばくぞ

613:デフォルトの名無しさん
18/10/25 20:10:31.29 NRPlmaaN.net
>>574
  >>578
  しかるのちpythonのバージョンを検出し
  そのさき読み込む部分を切り替える処理を書く
おk

614:デフォルトの名無しさん
18/10/25 20:58:23.32 NT+vxu3F.net
無駄なあがきだと思うよ
import sys
if sys.version_info >= (3, 0):
def xopen(file, encoding):
return open(file, encoding=encoding)
else:
import codecs
def xopen(file, encoding):
return codecs.open(file, encoding=encoding)

615:デフォルトの名無しさん
18/10/25 23:07:28.40 ZUq2YpeN.net
確かに文字列関係は労力が見合わないな

616:デフォルトの名無しさん
18/10/26 01:52:17.86 etilwalQ.net
>>581
ありがとうございます
いい感じに動いてるっぽいです
ちなみになんですが、
def xopen(file, encoding):
return open(file, encoding=encoding)
xopenという新たに定義した関数のencodingっていうパラメータが、open関数に渡る際に、encoding=encodingとなった右側のみに代入されるのがいまいち何故か分かりません

617:532
18/10/26 10:52:40.48 99OxERMj.net
>>540
遅レスで会話の邪魔して悪いんですが。英語で質問するだけの勇気がありません・・・
pyGTKでgtk.gestureはそもそも文献自体がほとんど(2019/1に洋書が出るようですが)ないので、
とりあえず今はwebkit1を使って凌ごうともいます。

618:デフォルトの名無しさん
18/10/26 11:27:23.79 +/5bIPXr.net
いまスクレイピングの勉強してて、テキスト通りに入力したら
operation not permittedとエラーが出ました
python3.6
IPad Proでpythonista使ってます
写真がその内容です
URLリンク(imgur.com)

619:デフォルトの名無しさん
18/10/26 11:28:03.08 +/5bIPXr.net
原因わかるかた教えてください

620:デフォルトの名無しさん
18/10/26 12:46:11.07 xBIHPZW8.net
>>574
そういうマルチバージョン対応などは、10年以上の開発者がやるもの!
初心者がやるべき事ではない
初心者は、python3系だけを使ってください

621:デフォルトの名無しさん
18/10/26 13:22:34.36 mc9Lb34M.net
>>587
アホは出てくんな

622:デフォルトの名無しさん
18/10/26 13:32:28.45 kt4cO7LW.net
>>586
クリップボードの内容を取得したりOSと連携する様な操作は
iPadだと出来ることと出来ないことがあるよ
クリップボードの内容取得は出来るけど
iOS用に書き換えないと
import clipboard
text = clipboard.get()
print(text)
Pythonista のドキュメントに以下の項目があって
iOS 用に使えるモジュールが出てる
Pythonista Modules
Additional modules developed specifically for iOS

623:デフォルトの名無しさん
18/10/26 13:40:57.57 pU3zjhOE.net
pipでuinstallした時に
would remove:
proceed?(y/n)
と聞かれて、yを選ぶと
fikenotfounderrorが出てアンインストール出来ません
どうしたらよいですか?

624:デフォルトの名無しさん
18/10/26 14:05:26.31 1xxQ31UG.net
>>590
pipのバージョン、Pythonのバージョン、OSの種類とバージョンくらい書かないと絶対無理

625:デフォルトの名無しさん
18/10/26 14:59:47.80 pU3zjhOE.net
pip 18.1
python 3.5.3
windows10
です。

626:デフォルトの名無しさん
18/10/26 15:02:26.09 pU3zjhOE.net
そして、uinstallしたいのはtensorflow1.4.0です。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1104日前に更新/299 KB
担当:undef