くだすれPython(超初心者用) その39at TECH
くだすれPython(超初心者用) その39 - 暇つぶし2ch507:デフォルトの名無しさん
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です。

627:デフォルトの名無しさん
18/10/26 15:07:19.64 1xxQ31UG.net
>>592-593
・ないといわれたファイルは実際に(ほんとうに)あるのか、ないのかをexplorerあたりから確認しる
・テンソルフローはうまくうごいていたのか、いないのか
・ログインユーザー名に日本語(2バイト文字)を使ってないか?

628:デフォルトの名無しさん
18/10/26 15:09:31.17 1xxQ31UG.net
もしかしたら
「setuptoolsを再インストール」すればなおるかもしんない。

629:デフォルトの名無しさん
18/10/26 15:41:07.87 7cSp+c0W.net
>>546
なるほど
見せるためだけに使ってる感じですか
ありがとうございます

630:デフォルトの名無しさん
18/10/26 17:48:07.64 OsF5A133.net
>>589
ありがとうございます
やっぱり初心者にpythonistaは厳しいのかなー
iPadで出来ていろいろ便利なんですけどね……。

631:538
18/10/26 20:36:27.02 VmKQ+7a8.net
>>576
どうもありがとうございます 参考になります 。
自分はWebページ作りそのものに感心は全く無いんですが、しかし今の自分が読むべきなのは例えばこういう本なんでしょうか?
URLリンク(images-na.ssl-images-amazon.com)
(アマゾンでHTML5


632:で検索して一番上に出てきた本です)



633:573
18/10/26 23:50:52.48 vtwelEqx.net
>>598
そういう感じの本です。
私の持っている本はこれです。ちょっと古いです。
URLリンク(images-na.ssl-images-amazon.com)
タグや属性を調べるだけならポケットリファレンスで十分かもしれません。
URLリンク(images-na.ssl-images-amazon.com)

634:デフォルトの名無しさん
18/10/27 00:41:13.73 QkHwtfgJ.net
スレチ

635:デフォルトの名無しさん
18/10/27 17:49:12.10 ZlRq8doU.net
HTML, CSS, JavaScript, jQuery などの事は、web制作管理板で聞いてください

636:デフォルトの名無しさん
18/10/27 17:49:31.22 M4OQ4nwj.net
python3で
print("humi" , humi, "%") を実行すると ('temp', 23.0, 'c') ←23は実際のセンサーの値です。
print関数で””で囲んだのは文字扱いで、複数の文字のときは「,」で区切りますよね?
理想は humi 47.0 %  と表示させたいのですがどうすればよいでしょうか?
初歩の質問なのですが悩んでおります

637:デフォルトの名無しさん
18/10/27 17:53:45.53 WN5vicFY.net
>>602
URLリンク(ideone.com)

638:デフォルトの名無しさん
18/10/27 18:16:13.96 M4OQ4nwj.net
>>603
すまんが 俺もいままではそれでできてた。
今回はそれを入力すると ('temp', 23.0, 'c') って出るんです
そもそもなんで「'」になってるのかすら分からない。

639:デフォルトの名無しさん
18/10/27 18:19:52.16 M4OQ4nwj.net
すまんごちゃごちゃになってますね。
print("humi" , humi, "%") →('humi', 23.0, '%') になります。
普通なら>>603で大丈夫なはずなんですけど。。

640:デフォルトの名無しさん
18/10/27 18:26:42.99 d3ZViLoJ.net
それはpython2の挙動だな

641:デフォルトの名無しさん
18/10/27 18:40:14.43 M4OQ4nwj.net
>>606
ん?そんな急に変わるもんなの?
実行もsudo pythonで実行してるけど sudo python3にできたりするのですか?

642:デフォルトの名無しさん
18/10/27 18:49:01.71 QoVX+/e8.net
>>607
2系と3系はハゲあがるほど文字列まわりが違う
3系をsudoするなら
sudo py

643:デフォルトの名無しさん
18/10/27 19:20:52.01 ZlRq8doU.net
Windows10, WSL, Ubuntu 16.04 では、
which python3
=> /usr/bin/python3

644:デフォルトの名無しさん
18/10/27 19:42:26.23 M4OQ4nwj.net
>>608
それは存じてます。
それより下にあるprint関数はpython3の書き方でしっかり表示できてるんですよね。。
なぜかこの行だけ変な表示になる

645:デフォルトの名無しさん
18/10/27 19:56:03.40 tpZx8Nmf.net
まだ2系使ってるのはどんな層?

646:デフォルトの名無しさん
18/10/27 20:38:05.02 p3Z91K38.net
Linux系じゃね?
ブートストラップ周りに2系がガッツリ食い込んでるって聞いたことある。
そのせいで2系がデフォルトで入ってるとか。

647:デフォルトの名無しさん
18/10/27 20:52:22.52 QoVX+/e8.net
>>611
基本Windows使ってるけど
2系のころ勉強して
そのまんま・・・
あとたしかに>>612

648:デフォルトの名無しさん
18/10/27 21:09:16.81 d3ZViLoJ.net
humi = 25
print("humi" , humi, "%")
print(humi)
出力:
('humi', 25, '%')
25

649:デフォルトの名無しさん
18/10/27 21:26:03.77 M4OQ4nwj.net
>>614
まさにこれ。
python2はないと思う。ずっとこれでやってきてるので。
部分的に2とかありえるのかな?

650:デフォルトの名無しさん
18/10/27 21:28:08.36 d3ZViLoJ.net
>>614はpython2で動かした結果

651:デフォルトの名無しさん
18/10/27 21:39:51.74 M4OQ4nwj.net
>>616
まじですか・・
当方ラズパイをつかってまして lxterminalで sudo python ファイル名 なら実行できるけど
python3 IDLEつかうとモジュールエラー出るから避けてたんだけど もしかしてpython3じゃないってことですかね?

652:デフォルトの名無しさん
18/10/27 21:41:02.12 GbJLfo15.net
ちゃんと調べたら2系で動いてましたテヘペロ
に1票
これまでずっとそうしてきたから�


653:ニか本当に信用ならん



654:デフォルトの名無しさん
18/10/27 21:42:08.13 QoVX+/e8.net
sudo python -Vと打ってかくにんしる

655:デフォルトの名無しさん
18/10/27 21:53:58.98 WN5vicFY.net
RHEL系もDebian系もシステム周りはここしばらくはpython -> python2で、3はpython3で呼ぶようになってる

656:デフォルトの名無しさん
18/10/27 21:57:57.20 M4OQ4nwj.net
>>618
確認しました。ほんとにそれでしたすいません。
pip3でインストールしなきゃいけなかったそうです
どうもありがとうございました

657:デフォルトの名無しさん
18/10/27 23:54:55.35 GbJLfo15.net
どんまい

658:デフォルトの名無しさん
18/10/28 07:05:43.19 7IwsJv31.net
自分ではどうしようもなくて他人に泣きついたのにどうしてその相手の言うことを聞かずにグダグダやってたんだ?

659:デフォルトの名無しさん
18/10/28 07:43:54.72 lVhl2H66.net
Pythonで作成したモジュールをUWSCで呼び出すことはできますか?
UWSCではDLLを読み込んで関数が使えるのですが
そういう行為をプログラミング用語でなんというのでしょうか
検索ワードがよくないのか手がかりすら掴めてないです
よろしくお願いします

660:デフォルトの名無しさん
18/10/28 07:57:38.17 JDWqlC9k.net
>>624
uwscなんて初めて知ったけど、exec()というコマンドがあるそうだから、単純に
exec("pythonのパス" + "pythonスクリプトのパス")でいいんじゃないの?

661:デフォルトの名無しさん
18/10/28 11:48:06.52 lVhl2H66.net
>>625
execはexeを起動するだけなんです
似たようなものにdoscmdというのがあるんですがこれでも駄目でした
UWSC掲示板があって過去ログもみたんですがPythonに関する質問すらなかったです
URLリンク(www3.rocketbbs.com)
すみませんわざわざ調べて頂いて

662:デフォルトの名無しさん
18/10/28 12:12:29.72 YiTUMI+K.net
>>626
それで十分だろ。
思い込みは捨てて
exec("<python.exeのフルパス> <スクリプトのフルパス>")
を実行してみなよ。
discmdのほうも単にパスが通ってないだけだと思うよ。
フルパスで入力してる?

663:デフォルトの名無しさん
18/10/28 12:54:25.06 lVhl2H66.net
>>627
すみません、解決しました
実行時の引数が不足してました
ありがとうございました

664:デフォルトの名無しさん
18/10/28 13:08:03.94 auhqQrbO.net
Fswebcamで撮影した写真をメールで自動送信を考えています。
探知して送るのはあるんですけど、撮影した写真をまとめて送るようなプログラムってつくりにくいですか?
シェルだと楽っぽいけど 慣れてないので分からない。。

665:デフォルトの名無しさん
18/10/28 13:30:49.38 auhqQrbO.net
もしくは撮影されたフォルダ内から日時の新しいものとか新しいうちの四つを添付するとかできないかなと?
普通に添付するならファイルが指定になるから難しそうですかね。。

666:デフォルトの名無しさん
18/10/28 22:42:22.92 KcfCsfCB.net
書いてみれば良いじゃない

667:デフォルトの名無しさん
18/10/28 23:28:27.44 fiBcuTbE.net
numpyで配列の要素が範囲となるような配列をつくることはできますか?
例えばAというはいれつがあって、
A[0] = np.arange(0,1,0.01)
みたいなものです

668:デフォルトの名無しさん
18/10/29 00:31:07.47 tXMYusEl.net
意図があってるか分からないが
A = np.stack([np.arange(0,1,0.01)]*10)
A += np.arange(10).reshape((10,1))

669:デフォルトの名無しさん
18/10/29 09:07:55.84 FSHl5k4M.net
>>623
いるよなこういう何の生産性もないレスする奴(烏賊ブ)

670:デフォルトの名無しさん
18/10/29 09:36:36.83 sBuO7UaY.net
そうだな

671:デフォルトの名無しさん
18/10/29 10:18:07.79 ThrPEx61.net
>>633
ありがとうございます
なんとかできました

672:デフォルトの名無しさん
18/10/29 11:12:02.14 wR2M4wFA.net
requestsでファイルをダウンロードする時タイムスタンプは変更しないでダウンロードする方法


673:教えて下さい!!



674:デフォルトの名無しさん
18/10/29 11:28:06.05 VxCr7qKV.net
os.utime

675:デフォルトの名無しさん
18/10/29 11:56:15.99 wR2M4wFA.net
requestsで何らかの方法を使ってファイルの作成日などを取得してダウンロード後にos.utimeでその日付に書き換えるんでしょうか?

676:デフォルトの名無しさん
18/10/29 11:57:16.03 wR2M4wFA.net
wget -N url
みたいな事が出来るとよいんですが。

677:デフォルトの名無しさん
18/10/29 12:28:53.22 20y3T6Cw.net
httpレスポンスヘッダのlastmodified

678:デフォルトの名無しさん
18/10/29 12:51:46.14 VtmwN/uo.net
wget -N url も utime やろ

679:493
18/10/29 17:45:54.93 k7vAtK/H.net
ちょっと前にwebkitgtk epubミューアの件で質問した者ですが、コードを見ていて疑問に思っていたことがあるので
質問させてください。
main_window.py
self.viewer = viewer.Viewer(self)
print("Displaying blank page.")
self.viewer.load_uri("about:blank") # Display a blank page
self.viewer.connect("load-finished", self.__ajust_scroll_position)
self.viewer.connect("load-finished", self.__save_new_position)
self.right_box.pack_end(self.right_scrollable_window, True, True, 0)
# Create Chapters List component and pack it on the left
self.chapters_list_component = chapters_list.ChaptersListComponent(self)
(途中省略)
def __save_new_position(self, wiget, data):
"""
Saves new position in case new load came from link based navigation
:param wiget:
:param data:
"""
if not data.get_uri() == "about:blank":
self.content_provider.set_data_from_uri(data.get_uri())
load-finishedの時に呼ばれているコールバック関数なんですが、wigetとdataって何なんですか?
なんでdata.get_uri()と書けるんでしょうか?
それと、このコールバック関数配置ページ読み込むごとに呼ばれているという認識で正しいのでしょうか?
あと、 content_provider.py
if urllib.parse.unquote((os.path.split(uri)[-1]).split("#")[0]) == os.path.split(self.chapter_links[i])[-1]:
ってどうして必要なんでしょうか?(これがないと機能しないようですが)

680:デフォルトの名無しさん
18/10/29 17:46:38.70 k7vAtK/H.net
関数配置ページ
関数は一ページの変換ミスです。ごめんなさい。

681:デフォルトの名無しさん
18/10/29 17:50:01.97 dTGmjkHB.net
URLリンク(imgur.com)
titleの文字列取得の時はstring付ければよかったけど、最後の奴はstring付けるとエラーになります
こういうときはどうやって文字列だけ抽出するんですか?

682:デフォルトの名無しさん
18/10/29 18:12:16.70 ItEstrK2.net
>>645
写真だと見づらいね
find_allの時はリストで取得してるから
for c in content: で回して取り出してみて

683:デフォルトの名無しさん
18/10/29 18:35:48.17 RJcKPmzk.net
c.attrs['content']

684:デフォルトの名無しさん
18/10/29 18:38:50.81 5LhWTx/7.net
pandasのtocsv使うときデータ内に¥nが入っててcsv出力時点で改行され、excelからcsvをデータインポートカンマ区切りで読み込みたい時に改行されて悲しいことになるんですがどうするのがスマートですか
¥n入るのは正しく、16桁以上の数字のカラムがあるのでデータインポートで読み込みたいです

685:デフォルトの名無しさん
18/10/29 18:49:52.26 dTGmjkHB.net
本当だ
よく見るとこの場合は実行するとリストとして取得されてるんですね
そりゃstringじゃ無理な訳ですね
わかりやすい

686:デフォルトの名無しさん
18/10/29 19:06:12.03 wR2M4wFA.net
>>641
>>642
もうちょっと教えてくださいお願いします!

687:デフォルトの名無しさん
18/10/29 19:11:52.05 PoEM5suC.net
ん? 今、何でもするって言ったよね。

688:デフォルトの名無しさん
18/10/29 19:21:40.44 TEtmhpeX.net
>>648
to_csvのオプションで個々の値にクォーテーションを付ける
import csv
df.to_csv(“hoge.csv”, quoting=csv.QUOTE_ALL)

689:デフォルトの名無しさん
18/10/29 21:46:01.91 b4sCrQ/m.net
>>643
そんな零細プログラムの詳細をここで質問しても誰も答えないと思うぞ…
気が向いたから答えるけど次はないからな。
__save_new_position()メソッドを呼びだしているのはwebviewクラス。
下記ページによると、第二引数はwebview自身、第三引数はwebframeクラスのインスタンスを渡して呼び出されることが分かる。
webframeのリファレンスページを見ればwebframeクラスがget_uri()メソッドを持っていることも分かる。
URLリンク(lazka.github.io)
content_providerのほうは、指定されたxmlファイルが、chapter_links配列の何番目のファイル名と一致しているかを調べることで、チャプター番号を特定している。
uriがエスケープされていたり"#"フラグメントがついてると比較できないから取り除いている。

690:デフォルトの名無しさん
18/10/29 21:54:17.26 g2+WGN4L.net
>>650
一般的にHTTPレスポンスヘッダのLast-Modifiedにファイルのmtimeが入ってるからそれを取得して、ファイル書き出してからmtime更新すれば良い
curl使えるなら-vで一度レスポンスヘッダ見るといい

691:デフォルトの名無しさん
18/10/29 21:58:45.40 Uyob8jIm.net
凄いねよく答えられるな、流石
gtkは全く知らないけど
wigetはwidgetのスペルミスだろうね、きっと

692:デフォルトの名無しさん
18/10/30 06:58:19.30 wwkQj2Ri.net
>>654
これであってますか?
resp = requests.get(url)
# レスポンスヘッダの Last-Modified を取得
last_modified = resp.headers['Last-Modified']
print(ast_modified)
Thu, 13 Oct 2016 05:36:56 GMT
# datetime オブジェクトに変換 (表記のロケール依存を防ぐために dateutil.parser を使う)
last_modified = dateutil.parser.parse(last_modified)
print(ast_modified)
2016-10-13 05:36:56+00:00
# unix time に変えるために calendar を使う
unixtime = calendar.timegm(lastModified.utctimetuple())
print(unixtime)
1476337016
# ファイルの書き込み
img_file = open(file_path, 'wb')
img_file.write(resp.content)
img_file.close()
os.utime(file_path, (unixtime, unixtime)) # ファイルパス, (アクセス時間, 修正時間)

ファイルの作成日の取得と書き込みはどうやるんでしょうか?

693:デフォルトの名無しさん
18/10/30 06:59:46.91 wwkQj2Ri.net
>>656
print(ast_modified)はprint(last_modified)の間違いです

694:640
18/10/30 08:47:23.62 /tw9qCHj.net
>>653
レスありがとうございます。助かりました。

695:デフォルトの名無しさん
18/10/30 09:35:33.18 /tw9qCHj.net
次はないと言割れましたがちょっと不思議なことがあったので質問させていただきます。
sorted関数を使うと、
パブリックドメインのepubで有名なgutenbergのファイル名をソートしていたのですが、
(@public@vhost@g@gutenberg@html@files@31278@31278-h@31278-h-0.htm.htm、@public@vhost@g@gutenberg@html@files@31278@31278-h@31278-h-10.htm.htmllなどというファイル名です)
0. 1.10, 11,12, .2などとソートされるようですが、普通に0,1,2,3,4の順番にできないのでしょうか。
というよりなぜグーテンベルクのファイルだけ、おかしなソートになるのかわかりません。

696:デフォルトの名無しさん
18/10/30 09:48:16.33 JqsKq037.net
数値型は数の大小で比較されるが、
文字列型の数値は文字列として比較されるから数の大小順には並ばない
数値として比較したければ、sort(またはsorted)のkey引数に適切なキー抽出関数を与える必要がある
その本だけがと言っているが、条件を満たしていればどんなリストでもお前の言う「おかしなソート」になる
print(sorted('11', '2', '.1'))

697:656
18/10/30 10:00:46.78 /tw9qCHj.net
>>660
ググったらでてきました。文字列型だと10が2より先に来るようですね。
どうもありがとうございました。

698:デフォルトの名無しさん
18/10/30 12:37:59.64 BBRqRtLN.net
>>656
そんな感じ
ファイルの作成日時は取得する手段がないので諦めて
(独自ヘッダで応答してくれるサーバーを除く)

699:デフォルトの名無しさん
18/10/30 12:44:20.01 QArnhM9r.net
>>652
試してみたけど無理でした
ダブルクリックで開くと問題ないけどtxtのインポートだと開いた時点で改行されるからどうしようも無いのかなこれ

700:デフォルトの名無しさん
18/10/30 14:52:54.90 mxVOiKCI.net
bashからpythonプログラムを実行するときに、pycharmで簡単にデバッグしたいんですが、どうすればいいですか?
pythonコードだけの場合のやり方は分かるんですけど
print()いっぱい書くしか無いんですかね

701:デフォルトの名無しさん
18/10/30 14:55:07.36 mxVOiKCI.net
>>661
float型に変換しないとちゃんとソートできないよ

702:デフォルトの名無しさん
18/10/30 15:01:43.41 mxVOiKCI.net
>>664
解決しました
URLリンク(stackoverflow.com)

703:デフォルトの名無しさん
18/10/30 15:02:59.00 o9t78hsF.net
>>664
pycharm使ってparametersに引数入れてやればいい。

704:653
18/10/30 15:46:23.76 74FRV+Zp.net
>>662
どうもありがとうございます
基本的に作成日の取得は出来ないんですね

705:653
18/10/30 16:13:18.69 74FRV+Zp.net
try:
f = open(local_path, 'rb')
dbx.files_upload(f.read(), upload_path)
f.close()
except dropbox.exceptions.ApiError:
print(dropbox.exceptions.ApiError.error)
Dropboxにアップロードする時、エラーが出た時はプリントするように例外を出したいんですが、
これだと、
AttributeError: type object 'ApiError' has no attribute 'error'
ってエラーが出てしまいます。

try:
f = open(local_path, 'rb')
dbx.files_upload(f.read(), upload_path)
f.close()
except dropbox.exceptions.ApiError as err:
print(err.error)
これだと、エラーがちゃんとプリントされます
なぜ、 as err を付けるとちゃんと動くんでしょうか? 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)


706:デフォルトの名無しさん
18/10/30 16:47:54.22 mxVOiKCI.net
pycharmでrun/debug configurationのset wowrking directoryに、プログラムを実行したいディレクトリ(pロジェクトのルート外)を入れても、ファイルが見つからないとエラーがでます
ターミナルでは実行可能です
プロジェクトのルート外のディレクトリで実行するにはどうすればいいいか教えて頂きたいです

707:デフォルトの名無しさん
18/10/30 17:27:16.66 o9t78hsF.net
>>670
ちょっと何言ってんだかわかんない。
working directoryは実行するpyhonスクリプトのディレクトリが勝手に入ると思うのだが。
見つからないと言われるファイルは何?
実行するスクリプトから参照しているファイルじゃないの?
図示してくれ。

708:デフォルトの名無しさん
18/10/30 18:23:15.32 LRpQBEf3.net
>>669
前者はクラス名.変数名(ApiError.error)になっているのでクラス変数を参照しようとしている。
故にApiErrorにerrorという名前のクラス変数がなければエラーになる。
後者はインスタンス名.変数名(err.error)になっているのでインスタンス変数を参照しようとしている。
errorはインスタンス変数なのでエラーにならない。

709:653
18/10/30 18:43:42.81 wwkQj2Ri.net
>>672
どうもありがとうございます
dropbox.exceptions.ApiError as err
これって、
dropbox.exceptions.ApiError



710:rrって別名にしただけですよね? ってことは err.errorと dropbox.exceptions.ApiError.error は結局同じ気がするんですが、違うんでしょうか? 違いがわからないです



711:デフォルトの名無しさん
18/10/30 19:22:58.06 LRpQBEf3.net
>>673
違うよ。
ApiErrorはクラス名、errはインスタンス名。
a = MyClass()
って書いたときにMyClassとaは違うものでしょ?それと同じ

712:デフォルトの名無しさん
18/10/30 19:39:22.54 vHVA3ezu.net
except E as N:
と書いてある場合は
"Eが例外オブジェクトのクラスだったら例外をNに代入"
という処理になる
他のasを使った文のようにEの別名をNにする訳ではない

713:デフォルトの名無しさん
18/10/30 23:12:08.40 tLch1bmf.net
普通そういう所に、クラス名など来ない
例外インスタンスが来る

714:デフォルトの名無しさん
18/10/31 00:55:47.26 KgeV0wH8.net
ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
sklearnでLinearSVCのグリッドサーチするとこの文章が永遠に出てくるんですけどどういうことですか?調べてもわかりませんでした。

715:デフォルトの名無しさん
18/10/31 01:29:09.72 C97UeufF.net
そのままの意味で、毎回の学習が収束まで行ってないからイテレーション回数増やせって事では

716:デフォルトの名無しさん
18/10/31 01:30:14.36 KgeV0wH8.net
>>678
増やしても出てくるんですよね…

717:デフォルトの名無しさん
18/10/31 10:16:21.72 C97UeufF.net
>>679
学習率が大きすぎるとか

718:デフォルトの名無しさん
18/10/31 12:17:11.83 /o0RsUYT.net
1からpythonの勉強始めて、オブジェクト指向とやらで挫折中。
クラスやら継承は何となく理解できて、
どう書けばいいのかも何となくわかるけど、
理解するのに時間がかかりそう。色々なコードを書いて覚えていくしかないのか?
経験者ってここら辺どうなんですか(しっかり理解できているかどうか)

719:デフォルトの名無しさん
18/10/31 13:08:59.03 gqgWGRur.net
関数とかと同じで、クラスも便利だなあと思える具体例や機会があれば使えるようになる
何処か見たアドレス帳を作る例は分かり易そうだったけど、あれは何処だったか
でもクラス使わなくてもプログラムは出来るから直ぐに使えるようにならなくても問題ない

720:デフォルトの名無しさん
18/10/31 13:20:42.47 gqtAU0ur.net
>>681
スクリプターってクラスを使うばっかりで作る方はあんまりって傾向があるから、無問題ではある。
Cも覚えてライブラリ作りも頑張ってほしいかな。
日本のプログラマーの質が問われるから。

721:デフォルトの名無しさん
18/10/31 13:31:11.31 zGg5PO0t.net
日本のプログラマーの質が問われるから。
だってw

722:デフォルトの名無しさん
18/10/31 13:32:03.51 gc+olMws.net
"html54200-0.html#anchor001"
と言う文字列の#の前の数字だけ抽出(542000)したいのですが、どのような正規表現を書けばよいのでしょうか?
([0-9]+)(?=#)
ではだめでした。よろしくお願いします。

723:682
18/10/31 13:35:03.91 gc+olMws.net
書き忘れましたが、現状ではre.findall[54200、 0]と言うリストを取得したあと、
join()で542000にすることを考えていたのですが、アンカーから後を取得すると狂ってしまうので、
アンカーから後は抽出したくないのです。よろしくお願いします。

724:デフォルトの名無しさん
18/10/31 13:40:28.98 fzRw5h8F.net
正規表現とかいらんだろ
str.lstrip("html")
str[:7]

725:デフォルトの名無しさん
18/10/31 13:42:08.67 1NzreX+B.net
re.search("(¥d+).*?(?=#)",s).group(1)

726:デフォルトの名無しさん
18/10/31 13:43:24.16 fzRw5h8F.net
ああそこが欲しいのか
str.lstrip("html")
str[:6].strip("-")

727:デフォルトの名無しさん
18/10/31 13:43:30.37 BEBaW28W.net
>>671
見つからないと言われるファイルはrun/debug configurationのparametersで指定したものです
>>working directoryは実行するpyhonスクリプトのディレクトリが勝手に入る
それをスクリプトを実行したい場所に変更してるんですけど

728:デフォルトの名無しさん
18/10/31 13:45:53.85 0yqa0SvH.net
>>685
(^0-9)|#.* を空文字に置換

729:デフォルトの名無しさん
18/10/31 13:51:38.68 XAA9QXm2.net
>>683-684
2ちゃんや5ちゃんの履歴消すしかないな

730:デフォルトの名無しさん
18/10/31 13:53:01.77 gc+olMws.net
レスありがとうございます。
>>687
これ以外にも似たようなファイルがあるので、できるだけ一般化しておきたいのです正規表現を考えました。
>>688
お教えいただいたところ申し訳ないのですが、Noneとでてしまいました。私の設定のどこかがまずかったのかしれませんが。

731:デフォルトの名無しさん
18/10/31 13:55:03.93 1NzreX+B.net
>>693
¥dの¥はバックスラッシュに直してくれ
[0-9]でもいいよ

732:デフォルトの名無しさん
18/10/31 14:00:41.64 gc+olMws.net
検索する文字列にsplit("#")[0]をつけることを思いつきました。
あんまりスマートじゃないかもしれませんがこれで行こうと思います。
皆さんありがとうございました。

733:デフォルトの名無しさん
18/10/31 14:03:31.31 1NzreX+B.net
>>690
図示してくれるか、何をどうしているのかという全体の構成がわからないと、
何でつまづいているのかがわからない。
parametersにはsys.argvで受け取りたい内容を入れることはわかってるんだよね?

734:デフォルトの名無しさん
18/10/31 14:20:03.17 BEBaW28W.net
>>696
他人の書いたコードがどう動いてるのか理解するためにデバッグしたいと思っていて、全体の構成はよくわかってないんですけど、それだとデバッグはできないってことなんでしかね?
あるファイルが出力される時点で動いてるコードを見たいと思ってるんですけど

735:デフォルトの名無しさん
18/10/31 14:46:51.62 1NzreX+B.net
>>697
イマイチわからんけど、
bashでpythonのscriptに何らかの引数を渡して実行したいって事じゃないの?
そうだとすればbashからの引数がscript parmetersの値で、
pycharmでそのスクリプトを開いてデバッグするだけの事だと思うんだけど違うの?

736:デフォルトの名無しさん
18/10/31 14:54:31.80 BEBaW28W.net
>>698
parameterで渡したはずのファイルがnot found になって困っているんです
で、そのファイルはcontent root 外なので問題なのかなとか思ってるんですけど

737:デフォルトの名無しさん
18/10/31 15:00:36.67 1NzreX+B.net
python側のデバッグ(動作確認)したいだけなら、
引数にこだわらずにダイレクトにファイル指定してやればいいだけだと思うけど?

738:デフォルトの名無しさん
18/10/31 15:27:06.72 BEBaW28W.net
いちいち書き換えないといけないんですかね?
せっかくコマンドライン引数で指定できるようになってるのに

739:デフォルトの名無しさん
18/10/31 15:29:28.35 BEBaW28W.net
>>695
そういう文字列処理はawkとかperlのほうが簡単だよ

740:デフォルトの名無しさん
18/10/31 17:36:50.33 DIssBnZo.net
def gethtml(url, prm=""):
 r = requests.get(url, params=prm)
 r.encoding = 'CP932'
 return r.text
こんな関数でエンコードがCP932(のはずの)サイトを取得して
日本語は普通に表示されてるんですけど
①とか㎞とかが文字化けしてしまいます。どうすれば文字化けを回避できますか?

741:デフォルトの名無しさん
18/10/31 18:12:41.93 taLNwoKn.net
NEC特殊文字が化けてるのか
いま確認環境がないからどうにかできるかはわからん

742:デフォルトの名無しさん
18/10/31 18:28:43.45 XAA9QXm2.net
>>> print('①とか㎞とか')
①とか㎞とか

ちゃんと表示される

743:デフォルトの名無しさん
18/10/31 18:37:40.87 DIssBnZo.net
とりあえず自己解決
対象ページをファイルとして保存した後、codecsで保存したファイルをロードすることで対処できました

744:デフォルトの名無しさん
18/10/31 20:12:08.83 gHBnMNYM.net
epubビューアの開発は順調に進んでるのかな

745:デフォルトの名無しさん
18/10/31 20:40:39.13 /o0RsUYT.net
>>683 >>682
2年間運用(継続中)してます。
所属部署がクラウドに力入れ始めててpython勉強
しと�


746:ッと言われてやってます。取りあえずスクレイピング できるようになりたいのでコード漁ってるんですが関数さえ 使用してないように見えてて、おっしゃる通りなんですかね 最終的に何か作れるようになりたいけど、何も思いつかないし 何を目指したらいいのやら



747:デフォルトの名無しさん
18/11/01 00:22:16.46 PBz6MbCm.net
>>685-695
Ruby なら、File.basename の第2引数に、.* を渡せば、. より前の部分を取れる
file_name = File.basename( "html54200-0.html#anchor001", ".*" )
#=> "html54200-0"
>>708
Ruby で、Selenium WebDriver, Nokogiri を使って、
ブラウザで自動ログインしたり、Showroom のアバターを削除したりしてる
他にも、5ch の書き込み内から、画像のURL だけを拾って表示したり、
主に、ブラウザを使った、webサイトの自動テストに使う
その際のPage Object は、典型的なオブジェクト指向による、テスト方法

748:デフォルトの名無しさん
18/11/01 04:05:25.76 rG6revia.net
>>708
まずはDomを理解汁

749:デフォルトの名無しさん
18/11/01 10:34:25.18 z733lC2q.net
>>708-710
スレチ

750:デフォルトの名無しさん
18/11/01 10:58:02.80 LBGTfI8S.net
>>701
言ってる事が矛盾してるんだけど。
>他人の書いたコードがどう動いてるのか理解するためにデバッグ
>いちいち書き換えないといけないんですかね?
理解すれためなら、一回入力するだけでいちいち書き換える必要はないだろ。

751:デフォルトの名無しさん
18/11/02 23:07:04.01 WjnTpSxg.net
MySQL connectorの使い方を教えてください。
MySQLのTIME型をSELECTしてfetchoneすると、datetime.timedelta型になってしまいます。
datetime.time型で取得するにはどうすれば良いのでしょうか?

752:デフォルトの名無しさん
18/11/03 07:29:30.23 ddSYlxYG.net
>>713
がいしゅつぽ
URLリンク(teratail.com)

753:デフォルトの名無しさん
18/11/03 10:46:05.35 j00DZJyr.net
rawで引っ張って自分でconvertする。
列の仕様がはっきりしているなら、たぶんこれが一番速い。

754:デフォルトの名無しさん
18/11/03 22:09:03.24 +dBdxEJM.net
>>670
まだサポートされていない機能だったらしいです
一応報告
URLリンク(youtrack.jetbrains.com)

755:デフォルトの名無しさん
18/11/03 22:14:11.53 +dBdxEJM.net
pyファイルに引数としてファイル渡して実行しながらデバッグしたいんですけどideでできますか?

756:デフォルトの名無しさん
18/11/04 00:16:25.00 NVjVjeVc.net
さすがにできないと困るでしょう。

757:デフォルトの名無しさん
18/11/04 13:42:02.03 5RY1Lh2I.net
>>714
これあかんやつやω
環境変わったら動かなくなるぞ

758:デフォルトの名無しさん
18/11/04 23:14:32.54 mnXqRc1x.net
Excelの全シートの特定セルから値を抽出したいんですが、
import openpyxl
book = openpyxl.load_workbook('xxx.xlsx')
all_sheet = book.sheetnames
for 抽出 in all_sheet:
print(抽出.cell(row=1, column=1).value)
ってやってもうまくいきません。
ご指導をお願いします。

759:デフォルトの名無しさん
18/11/04 23:33:00.89 H3HfNEok.net
Gmail inboxでメール作成する時、文字の色を替えたり背景色を付けたりは、
Pythonにやらせるのはやはり難しいのでしょうか
例えば文章を[b]と[/)で挟んでも、何事も無く……
ご指導を…m(_ _)m

760:デフォルトの名無しさん
18/11/04 23:45:43.19 f0WItr4A.net
関数の引数の一つをオプションにしたいのですが
デフォルトの値を関数内で決めたいです。例えばイメージ�


761:ニしては def Function(data, average): としてaverageのデフォルトの値を引数dataの平均値にしたいです。 average = np.(data) のようにしてもエラーが出てきます。どのようにすればよいでしょうか?



762:デフォルトの名無しさん
18/11/05 00:12:47.04 WItML0Cb.net
>>720
all_sheet = book.sheetnames

all_sheet = book.worksheets
>>722
やりたいことはよう分らんが
np.(data)

np(data) #.(コンマ)を抜く
とすればエラーが出なくなるんでは

763:デフォルトの名無しさん
18/11/05 00:22:33.69 Forp8UuV.net
>>722
まずエラーメッセージを読む、そしてレスに添え省かない
もしデフォルト引数に書いたなら定義時に評価されるので
None等にしておき呼び出された時に判定して代入するなり

764:デフォルトの名無しさん
18/11/05 00:28:55.36 8OhTTD0N.net
>>722
平均を取るのは np.mean() だと思う。(import numpy as npしてればの話だけど)
関数の引数を他の引数のデフォルト値に設定したりはできないので
def Fucntion(data, average=None):
 if average is None:
   avarage = np.mean(data)
と書くのが普通じゃないかな

765:デフォルトの名無しさん
18/11/05 00:39:16.13 Dut8FIaQ.net
719です。
>>725で解決しました。
ありがとうございました。

766:デフォルトの名無しさん
18/11/05 10:25:00.99 h9xlJLA6.net
Slackでは<{url}|{title}>の形式で書けば、リンクとして表示してくれるので、
slackToken = 'example'
url = 'URLリンク(example.com)<)タイトルです>>>って表示になって、バグってしまいます。
今はとりあえず、text2の最初と最後が<>だったらその文字を削除してるんですが、text2に<>を含んだままSlackに送るにはどうやるんでしょうか?

767:デフォルトの名無しさん
18/11/05 13:32:25.59 o5QGnfIr.net
&lt;
&gt;

768:デフォルトの名無しさん
18/11/05 13:46:32.33 h9xlJLA6.net
どうもありがとうございます!

769:デフォルトの名無しさん
18/11/05 16:48:18.27 0An2vgEj.net
list.__getitemって何を返すんですか?
調べてもわからなかったんで教えてください

770:デフォルトの名無しさん
18/11/05 17:18:39.84 o5QGnfIr.net
a=[1,2,3]
a.__getitem__(1) # 2

771:デフォルトの名無しさん
18/11/05 17:19:31.32 +kDBf8bs.net
>>730
スライスの演算をオーバーロードするメソッドやで

772:デフォルトの名無しさん
18/11/05 18:10:05.24 0An2vgEj.net
>>731
>>732
heapq.nlargest(n, iterable, key=None)のkeyにlist.__getitem__の結果を入れることに、なんの意味があるんでしょうか。

773:デフォルトの名無しさん
18/11/05 18:29:42.84 ll2Vxm5g.net
これのnew = tv[i]っていりますの?
なんかいらないっぽい気がして削っても動いたんだけど
暇で優しい人気が向いたら教えて
tv = ["GOT", "Narcos",
"Vice"]
for i, show in enumerate(tv):
new = tv[i]
new = new.upper()
tv[i] = new

print(tv)
URLリンク(github.com)

774:デフォルトの名無しさん
18/11/05 18:33:34.89 ll2Vxm5g.net
あっれ?この野郎!
本とコードが違うじゃないか
独学プログラマーめ・・・
本だと変数のshowがnewに書き換えられてる

775:デフォルトの名無しさん
18/11/05 23:28:07.21 i/g7f+lV.net
>>727-729
Ruby の、CGI.escapeHTML みたいな、HTML エスケープだろ
Python にも、そういう関数があるはず

776:デフォルトの名無しさん
18/11/06 09:03:03.85 oDFoDpyv.net
>>734
本が何かわからんけど、
forの中はtv[i] = show.upper()だけで大丈夫。

777:デフォルトの名無しさん
18/11/06 11:06:31.30 cQb5p7fE.net
python+gtkでepubビューアを改造している者ですが、
htmlファイルのアンカーのスクロール座標をjavascriptを使わずにpythonだけ取得することはできるんでしょうか?
具体的な用途としては、ブックマークの時のチャプター名や、
Linuxのevince(document viewer)の様に、画面をスクロールして次のチャプターの領域に入ると自動で、
左のチャプターリストビューの選択もそのチャプターのところに移動してほしいのですが、(クリック扱いになると
チャプターの最初に戻されてしまうので、青い選択が移るだけにしたいのです。)
言葉でうまく説明できなくてすみません

778:デフォルトの名無しさん
18/11/06 11:20:08.33 VRf3OGgv.net
>>737
ありがとう!
「独学プログラマー」って本です
これが終わったらdeeplearningの本読んでAI作るんだ・・・道は遠そう

779:デフォルトの名無しさん
18/11/06 17:51:56.07 Zf4d0x7S.net
htmlで
<td class=" "><a href=" ">TEXT</a></td>
のうちの<a href>内の" "の中身だけを取り出すにはどうすればいいですか?

780:デフォルトの名無しさん
18/11/06 19:12:51.68 B9fQWZZ6.net
>>740
何のモジュール使ってhtmlよんでんだよ

セレニウムなら「href属性 取得 selenium python」でググれ

781:724
18/11/06 20:09:21.47 QHiQfJwC.net
724ですけど、変数内に~~や**があるとそれらもSlack側で以下のように反応してしまいました。
~あいうえお~
と波線で囲めば打ち消し線に、
*あいうえお*
だと、太字です。
記号は記号としてポストするにはどうしたらいいんでしょうか?

782:デフォルトの名無しさん
18/11/06 20:13:57.06 B9fQWZZ6.net
*→ *
~→ ~

783:デフォルトの名無しさん
18/11/06 20:14:48.35 B9fQWZZ6.net
(´Д`lll)&to#は半角でな
*→ &#126;
~→ &#42;

784:724
18/11/06 20:28:42.52 QHiQfJwC.net
>>744
どうもありがとうございます!
試してみます!
今のところ分かったのはこの3つなんですが、記号類をまとめてちゃんと表示する仕組みってありますか?
今ちょっとググってたら
xml.sax.saxutilsのescapeだと<>はエスケープしてくれそうな感じでした。

785:デフォルトの名無しさん
18/11/06 20:31:38.28 0p0MEBcD.net
"mrkdwn": false

786:724
18/11/06 20:32:44.30 QHiQfJwC.net
あと、混乱してしまってるんですが、変数textの中にもし<、>、*、~のいずれかが含まれてたら、<、>、&#126;、&#42;に置き換えるには、if文でどう書くんでしょうか?

787:724
18/11/06 20:36:27.93 QHiQfJwC.net
何度もすみません
import xml.sax.saxutils from escape

import htmlのhtml.escape
はどう使い分けるんでしょうか?

788:デフォルトの名無しさん
18/11/06 20:51:13.02 B9fQWZZ6.net
>>747
findを使ってtextを検索し、-1よりでかい数が帰ってくるかどうかためす。
if text.find(’<’) > -1 or text.find(’>’) > -1 or....(略)

789:デフォルトの名無しさん
18/11/06 20:56:52.27 B9fQWZZ6.net
(つづき)
でもってif文のインデントの中に
text=text.replace('before','after').replace('before','after').replace('before','after').replace('before','after')
beforeにはそれぞれ<、>、*、~を入れて
aterには&#42;


790:とかそういうのを書いておく



791:724
18/11/06 20:58:43.90 QHiQfJwC.net
>>749
なるほど!ありがとうございます!
> if text.find(’<’) > -1 or text.find(’>’) > -1 or....(略)
を途中で改行したい場合はどうやるんでしょうか?
バックスラッシュ付けるっぽいんですが、以下だとエラーになります
if text.find(’<’) > -1 or text.find(’>’) > -1 \
or....(略)


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