くだすれPython(超初心者用) その39

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/08/24(金) 07:50:35.97ID:VD4/++xS
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その38
https://mevius.5ch.net/test/read.cgi/tech/1526522954/
2018/10/29(月) 21:58:45.40ID:Uyob8jIm
凄いねよく答えられるな、流石

gtkは全く知らないけど
wigetはwidgetのスペルミスだろうね、きっと
2018/10/30(火) 06:58:19.30ID:wwkQj2Ri
>>651
これであってますか?

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)) # ファイルパス, (アクセス時間, 修正時間)


ファイルの作成日の取得と書き込みはどうやるんでしょうか?
2018/10/30(火) 06:59:46.91ID:wwkQj2Ri
>>653
print(ast_modified)はprint(last_modified)の間違いです
655640
垢版 |
2018/10/30(火) 08:47:23.62ID:/tw9qCHj
>>650
レスありがとうございます。助かりました。
2018/10/30(火) 09:35:33.18ID:/tw9qCHj
次はないと言割れましたがちょっと不思議なことがあったので質問させていただきます。
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の順番にできないのでしょうか。
というよりなぜグーテンベルクのファイルだけ、おかしなソートになるのかわかりません。
2018/10/30(火) 09:48:16.33ID:JqsKq037
数値型は数の大小で比較されるが、
文字列型の数値は文字列として比較されるから数の大小順には並ばない
数値として比較したければ、sort(またはsorted)のkey引数に適切なキー抽出関数を与える必要がある

その本だけがと言っているが、条件を満たしていればどんなリストでもお前の言う「おかしなソート」になる
print(sorted('11', '2', '.1'))
658656
垢版 |
2018/10/30(火) 10:00:46.78ID:/tw9qCHj
>>657
ググったらでてきました。文字列型だと10が2より先に来るようですね。
どうもありがとうございました。
2018/10/30(火) 12:37:59.64ID:BBRqRtLN
>>653
そんな感じ
ファイルの作成日時は取得する手段がないので諦めて
(独自ヘッダで応答してくれるサーバーを除く)
2018/10/30(火) 12:44:20.01ID:QArnhM9r
>>649
試してみたけど無理でした
ダブルクリックで開くと問題ないけどtxtのインポートだと開いた時点で改行されるからどうしようも無いのかなこれ
661デフォルトの名無しさん
垢版 |
2018/10/30(火) 14:52:54.90ID:mxVOiKCI
bashからpythonプログラムを実行するときに、pycharmで簡単にデバッグしたいんですが、どうすればいいですか?
pythonコードだけの場合のやり方は分かるんですけど
print()いっぱい書くしか無いんですかね
662デフォルトの名無しさん
垢版 |
2018/10/30(火) 14:55:07.36ID:mxVOiKCI
>>658
float型に変換しないとちゃんとソートできないよ
663デフォルトの名無しさん
垢版 |
2018/10/30(火) 15:01:43.41ID:mxVOiKCI
>>661
解決しました
https://stackoverflow.com/questions/27952331/debugging-with-pycharm-terminal-arguments
2018/10/30(火) 15:02:59.00ID:o9t78hsF
>>661
pycharm使ってparametersに引数入れてやればいい。
665653
垢版 |
2018/10/30(火) 15:46:23.76ID:74FRV+Zp
>>659
どうもありがとうございます
基本的に作成日の取得は出来ないんですね
666653
垢版 |
2018/10/30(火) 16:13:18.69ID:74FRV+Zp
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)
667デフォルトの名無しさん
垢版 |
2018/10/30(火) 16:47:54.22ID:mxVOiKCI
pycharmでrun/debug configurationのset wowrking directoryに、プログラムを実行したいディレクトリ(pロジェクトのルート外)を入れても、ファイルが見つからないとエラーがでます
ターミナルでは実行可能です
プロジェクトのルート外のディレクトリで実行するにはどうすればいいいか教えて頂きたいです
2018/10/30(火) 17:27:16.66ID:o9t78hsF
>>667
ちょっと何言ってんだかわかんない。
working directoryは実行するpyhonスクリプトのディレクトリが勝手に入ると思うのだが。
見つからないと言われるファイルは何?
実行するスクリプトから参照しているファイルじゃないの?
図示してくれ。
2018/10/30(火) 18:23:15.32ID:LRpQBEf3
>>666
前者はクラス名.変数名(ApiError.error)になっているのでクラス変数を参照しようとしている。
故にApiErrorにerrorという名前のクラス変数がなければエラーになる。

後者はインスタンス名.変数名(err.error)になっているのでインスタンス変数を参照しようとしている。
errorはインスタンス変数なのでエラーにならない。
670653
垢版 |
2018/10/30(火) 18:43:42.81ID:wwkQj2Ri
>>669
どうもありがとうございます
dropbox.exceptions.ApiError as err
これって、
dropbox.exceptions.ApiError
をerrって別名にしただけですよね?

ってことは
err.errorと
dropbox.exceptions.ApiError.error
は結局同じ気がするんですが、違うんでしょうか?
違いがわからないです
2018/10/30(火) 19:22:58.06ID:LRpQBEf3
>>670
違うよ。
ApiErrorはクラス名、errはインスタンス名。
a = MyClass()
って書いたときにMyClassとaは違うものでしょ?それと同じ
672デフォルトの名無しさん
垢版 |
2018/10/30(火) 19:39:22.54ID:vHVA3ezu
except E as N:
と書いてある場合は
"Eが例外オブジェクトのクラスだったら例外をNに代入"
という処理になる
他のasを使った文のようにEの別名をNにする訳ではない
2018/10/30(火) 23:12:08.40ID:tLch1bmf
普通そういう所に、クラス名など来ない

例外インスタンスが来る
2018/10/31(水) 00:55:47.26ID:KgeV0wH8
ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.

sklearnでLinearSVCのグリッドサーチするとこの文章が永遠に出てくるんですけどどういうことですか?調べてもわかりませんでした。
675デフォルトの名無しさん
垢版 |
2018/10/31(水) 01:29:09.72ID:C97UeufF
そのままの意味で、毎回の学習が収束まで行ってないからイテレーション回数増やせって事では
2018/10/31(水) 01:30:14.36ID:KgeV0wH8
>>675
増やしても出てくるんですよね…
677デフォルトの名無しさん
垢版 |
2018/10/31(水) 10:16:21.72ID:C97UeufF
>>676
学習率が大きすぎるとか
678デフォルトの名無しさん
垢版 |
2018/10/31(水) 12:17:11.83ID:/o0RsUYT
1からpythonの勉強始めて、オブジェクト指向とやらで挫折中。
クラスやら継承は何となく理解できて、
どう書けばいいのかも何となくわかるけど、
理解するのに時間がかかりそう。色々なコードを書いて覚えていくしかないのか?
経験者ってここら辺どうなんですか(しっかり理解できているかどうか)
2018/10/31(水) 13:08:59.03ID:gqgWGRur
関数とかと同じで、クラスも便利だなあと思える具体例や機会があれば使えるようになる
何処か見たアドレス帳を作る例は分かり易そうだったけど、あれは何処だったか
でもクラス使わなくてもプログラムは出来るから直ぐに使えるようにならなくても問題ない
680デフォルトの名無しさん
垢版 |
2018/10/31(水) 13:20:42.47ID:gqtAU0ur
>>678
スクリプターってクラスを使うばっかりで作る方はあんまりって傾向があるから、無問題ではある。
Cも覚えてライブラリ作りも頑張ってほしいかな。
日本のプログラマーの質が問われるから。
681デフォルトの名無しさん
垢版 |
2018/10/31(水) 13:31:11.31ID:zGg5PO0t
日本のプログラマーの質が問われるから。

だってw
2018/10/31(水) 13:32:03.51ID:gc+olMws
"html54200-0.html#anchor001"

と言う文字列の#の前の数字だけ抽出(542000)したいのですが、どのような正規表現を書けばよいのでしょうか?
([0-9]+)(?=#)
ではだめでした。よろしくお願いします。
683682
垢版 |
2018/10/31(水) 13:35:03.91ID:gc+olMws
書き忘れましたが、現状ではre.findall[54200、 0]と言うリストを取得したあと、
join()で542000にすることを考えていたのですが、アンカーから後を取得すると狂ってしまうので、
アンカーから後は抽出したくないのです。よろしくお願いします。
2018/10/31(水) 13:40:28.98ID:fzRw5h8F
正規表現とかいらんだろ

str.lstrip("html")
str[:7]
2018/10/31(水) 13:42:08.67ID:1NzreX+B
re.search("(¥d+).*?(?=#)",s).group(1)
2018/10/31(水) 13:43:24.16ID:fzRw5h8F
ああそこが欲しいのか

str.lstrip("html")
str[:6].strip("-")
687デフォルトの名無しさん
垢版 |
2018/10/31(水) 13:43:30.37ID:BEBaW28W
>>668
見つからないと言われるファイルはrun/debug configurationのparametersで指定したものです
>>working directoryは実行するpyhonスクリプトのディレクトリが勝手に入る
それをスクリプトを実行したい場所に変更してるんですけど
2018/10/31(水) 13:45:53.85ID:0yqa0SvH
>>682
(^0-9)|#.* を空文字に置換
689デフォルトの名無しさん
垢版 |
2018/10/31(水) 13:51:38.68ID:XAA9QXm2
>>680-681
2ちゃんや5ちゃんの履歴消すしかないな
2018/10/31(水) 13:53:01.77ID:gc+olMws
レスありがとうございます。
>>684
これ以外にも似たようなファイルがあるので、できるだけ一般化しておきたいのです正規表現を考えました。
>>685
お教えいただいたところ申し訳ないのですが、Noneとでてしまいました。私の設定のどこかがまずかったのかしれませんが。
2018/10/31(水) 13:55:03.93ID:1NzreX+B
>>690
¥dの¥はバックスラッシュに直してくれ
[0-9]でもいいよ
2018/10/31(水) 14:00:41.64ID:gc+olMws
検索する文字列にsplit("#")[0]をつけることを思いつきました。
あんまりスマートじゃないかもしれませんがこれで行こうと思います。
皆さんありがとうございました。
2018/10/31(水) 14:03:31.31ID:1NzreX+B
>>687
図示してくれるか、何をどうしているのかという全体の構成がわからないと、
何でつまづいているのかがわからない。
parametersにはsys.argvで受け取りたい内容を入れることはわかってるんだよね?
694デフォルトの名無しさん
垢版 |
2018/10/31(水) 14:20:03.17ID:BEBaW28W
>>693
他人の書いたコードがどう動いてるのか理解するためにデバッグしたいと思っていて、全体の構成はよくわかってないんですけど、それだとデバッグはできないってことなんでしかね?
あるファイルが出力される時点で動いてるコードを見たいと思ってるんですけど
2018/10/31(水) 14:46:51.62ID:1NzreX+B
>>694
イマイチわからんけど、
bashでpythonのscriptに何らかの引数を渡して実行したいって事じゃないの?

そうだとすればbashからの引数がscript parmetersの値で、
pycharmでそのスクリプトを開いてデバッグするだけの事だと思うんだけど違うの?
696デフォルトの名無しさん
垢版 |
2018/10/31(水) 14:54:31.80ID:BEBaW28W
>>695
parameterで渡したはずのファイルがnot found になって困っているんです
で、そのファイルはcontent root 外なので問題なのかなとか思ってるんですけど
2018/10/31(水) 15:00:36.67ID:1NzreX+B
python側のデバッグ(動作確認)したいだけなら、
引数にこだわらずにダイレクトにファイル指定してやればいいだけだと思うけど?
698デフォルトの名無しさん
垢版 |
2018/10/31(水) 15:27:06.72ID:BEBaW28W
いちいち書き換えないといけないんですかね?
せっかくコマンドライン引数で指定できるようになってるのに
699デフォルトの名無しさん
垢版 |
2018/10/31(水) 15:29:28.35ID:BEBaW28W
>>692
そういう文字列処理はawkとかperlのほうが簡単だよ
2018/10/31(水) 17:36:50.33ID:DIssBnZo
def gethtml(url, prm=""):
 r = requests.get(url, params=prm)
 r.encoding = 'CP932'
 return r.text

こんな関数でエンコードがCP932(のはずの)サイトを取得して
日本語は普通に表示されてるんですけど
@とかqとかが文字化けしてしまいます。どうすれば文字化けを回避できますか?
2018/10/31(水) 18:12:41.93ID:taLNwoKn
NEC特殊文字が化けてるのか
いま確認環境がないからどうにかできるかはわからん
702デフォルトの名無しさん
垢版 |
2018/10/31(水) 18:28:43.45ID:XAA9QXm2
>>> print('@とかqとか')
@とかqとか


ちゃんと表示される
2018/10/31(水) 18:37:40.87ID:DIssBnZo
とりあえず自己解決
対象ページをファイルとして保存した後、codecsで保存したファイルをロードすることで対処できました
704デフォルトの名無しさん
垢版 |
2018/10/31(水) 20:12:08.83ID:gHBnMNYM
epubビューアの開発は順調に進んでるのかな
705デフォルトの名無しさん
垢版 |
2018/10/31(水) 20:40:39.13ID:/o0RsUYT
>>680 >>679
2年間運用(継続中)してます。
所属部署がクラウドに力入れ始めててpython勉強
しとけと言われてやってます。取りあえずスクレイピング
できるようになりたいのでコード漁ってるんですが関数さえ
使用してないように見えてて、おっしゃる通りなんですかね
最終的に何か作れるようになりたいけど、何も思いつかないし
何を目指したらいいのやら
2018/11/01(木) 00:22:16.46ID:PBz6MbCm
>>682-692
Ruby なら、File.basename の第2引数に、.* を渡せば、. より前の部分を取れる

file_name = File.basename( "html54200-0.html#anchor001", ".*" )
#=> "html54200-0"

>>705
Ruby で、Selenium WebDriver, Nokogiri を使って、
ブラウザで自動ログインしたり、Showroom のアバターを削除したりしてる

他にも、5ch の書き込み内から、画像のURL だけを拾って表示したり、
主に、ブラウザを使った、webサイトの自動テストに使う

その際のPage Object は、典型的なオブジェクト指向による、テスト方法
707デフォルトの名無しさん
垢版 |
2018/11/01(木) 04:05:25.76ID:rG6revia
>>705
まずはDomを理解汁
708デフォルトの名無しさん
垢版 |
2018/11/01(木) 10:34:25.18ID:z733lC2q
>>705-707
スレチ
2018/11/01(木) 10:58:02.80ID:LBGTfI8S
>>698
言ってる事が矛盾してるんだけど。
>他人の書いたコードがどう動いてるのか理解するためにデバッグ
>いちいち書き換えないといけないんですかね?

理解すれためなら、一回入力するだけでいちいち書き換える必要はないだろ。
710デフォルトの名無しさん
垢版 |
2018/11/02(金) 23:07:04.01ID:WjnTpSxg
MySQL connectorの使い方を教えてください。

MySQLのTIME型をSELECTしてfetchoneすると、datetime.timedelta型になってしまいます。
datetime.time型で取得するにはどうすれば良いのでしょうか?
2018/11/03(土) 07:29:30.23ID:ddSYlxYG
>>710
がいしゅつぽ
ttps://teratail.com/questions/141268
2018/11/03(土) 10:46:05.35ID:j00DZJyr
rawで引っ張って自分でconvertする。
列の仕様がはっきりしているなら、たぶんこれが一番速い。
713デフォルトの名無しさん
垢版 |
2018/11/03(土) 22:09:03.24ID:+dBdxEJM
>>667
まだサポートされていない機能だったらしいです
一応報告
https://youtrack.jetbrains.com/issue/IDEA-88717
714デフォルトの名無しさん
垢版 |
2018/11/03(土) 22:14:11.53ID:+dBdxEJM
pyファイルに引数としてファイル渡して実行しながらデバッグしたいんですけどideでできますか?
2018/11/04(日) 00:16:25.00ID:NVjVjeVc
さすがにできないと困るでしょう。
716デフォルトの名無しさん
垢版 |
2018/11/04(日) 13:42:02.03ID:5RY1Lh2I
>>711
これあかんやつやω
環境変わったら動かなくなるぞ
717デフォルトの名無しさん
垢版 |
2018/11/04(日) 23:14:32.54ID:mnXqRc1x
Excelの全シートの特定セルから値を抽出したいんですが、

import openpyxl
book = openpyxl.load_workbook('xxx.xlsx')
all_sheet = book.sheetnames
for 抽出 in all_sheet:
print(抽出.cell(row=1, column=1).value)

ってやってもうまくいきません。
ご指導をお願いします。
2018/11/04(日) 23:33:00.89ID:H3HfNEok
Gmail inboxでメール作成する時、文字の色を替えたり背景色を付けたりは、
Pythonにやらせるのはやはり難しいのでしょうか
例えば文章を[b]と[/)で挟んでも、何事も無く……
ご指導を…m(_ _)m
2018/11/04(日) 23:45:43.19ID:f0WItr4A
関数の引数の一つをオプションにしたいのですが
デフォルトの値を関数内で決めたいです。例えばイメージとしては

def Function(data, average):

としてaverageのデフォルトの値を引数dataの平均値にしたいです。
average = np.(data)
のようにしてもエラーが出てきます。どのようにすればよいでしょうか?
720デフォルトの名無しさん
垢版 |
2018/11/05(月) 00:12:47.04ID:WItML0Cb
>>717
all_sheet = book.sheetnames

all_sheet = book.worksheets

>>719
やりたいことはよう分らんが
np.(data)

np(data) #.(コンマ)を抜く
とすればエラーが出なくなるんでは
2018/11/05(月) 00:22:33.69ID:Forp8UuV
>>719
まずエラーメッセージを読む、そしてレスに添え省かない
もしデフォルト引数に書いたなら定義時に評価されるので
None等にしておき呼び出された時に判定して代入するなり
2018/11/05(月) 00:28:55.36ID:8OhTTD0N
>>719
平均を取るのは np.mean() だと思う。(import numpy as npしてればの話だけど)
関数の引数を他の引数のデフォルト値に設定したりはできないので

def Fucntion(data, average=None):
 if average is None:
   avarage = np.mean(data)

と書くのが普通じゃないかな
2018/11/05(月) 00:39:16.13ID:Dut8FIaQ
719です。
>>722で解決しました。
ありがとうございました。
2018/11/05(月) 10:25:00.99ID:h9xlJLA6
Slackでは<{url}|{title}>の形式で書けば、リンクとして表示してくれるので、

slackToken = 'example'
url = 'http://example.com'
text1 ='あああああ'
text2 = 'タイトルです'
attText = f'aiueo <{url}|{text2}> kakikukeko'

slackData = {
"username": username,
"channel": channel,
"text": text1,
"attachments": [
{
"color": "#39a6e8",
"text": attText,
"thumb_url": thumbUrl
}
]}

requests.post(slackToken, data=json.dumps(slackData))

こんな感じで、requestsを使ってSlackにおくりたいんですが、
title2の1文字目が「<」で最後の文字が「>」だった場合、
Slack上では何故か aiueo <<http://example.com<;タイトルです>>>って表示になって、バグってしまいます。
今はとりあえず、text2の最初と最後が<>だったらその文字を削除してるんですが、text2に<>を含んだままSlackに送るにはどうやるんでしょうか?
725デフォルトの名無しさん
垢版 |
2018/11/05(月) 13:32:25.59ID:o5QGnfIr
&lt;
&gt;
2018/11/05(月) 13:46:32.33ID:h9xlJLA6
どうもありがとうございます!
727デフォルトの名無しさん
垢版 |
2018/11/05(月) 16:48:18.27ID:0An2vgEj
list.__getitemって何を返すんですか?
調べてもわからなかったんで教えてください
728デフォルトの名無しさん
垢版 |
2018/11/05(月) 17:18:39.84ID:o5QGnfIr
a=[1,2,3]
a.__getitem__(1) # 2
2018/11/05(月) 17:19:31.32ID:+kDBf8bs
>>727
スライスの演算をオーバーロードするメソッドやで
730デフォルトの名無しさん
垢版 |
2018/11/05(月) 18:10:05.24ID:0An2vgEj
>>728
>>729
heapq.nlargest(n, iterable, key=None)のkeyにlist.__getitem__の結果を入れることに、なんの意味があるんでしょうか。
2018/11/05(月) 18:29:42.84ID:ll2Vxm5g
これのnew = tv[i]っていりますの?
なんかいらないっぽい気がして削っても動いたんだけど
暇で優しい人気が向いたら教えて

tv = ["GOT", "Narcos",
"Vice"]
for i, show in enumerate(tv):
new = tv[i]
new = new.upper()
tv[i] = new


print(tv)

https://github.com/calthoff/self_taught/blob/master/python_ex205.py/
2018/11/05(月) 18:33:34.89ID:ll2Vxm5g
あっれ?この野郎!
本とコードが違うじゃないか
独学プログラマーめ・・・
本だと変数のshowがnewに書き換えられてる
2018/11/05(月) 23:28:07.21ID:i/g7f+lV
>>724-726
Ruby の、CGI.escapeHTML みたいな、HTML エスケープだろ

Python にも、そういう関数があるはず
2018/11/06(火) 09:03:03.85ID:oDFoDpyv
>>731
本が何かわからんけど、
forの中はtv[i] = show.upper()だけで大丈夫。
2018/11/06(火) 11:06:31.30ID:cQb5p7fE
python+gtkでepubビューアを改造している者ですが、
htmlファイルのアンカーのスクロール座標をjavascriptを使わずにpythonだけ取得することはできるんでしょうか?
具体的な用途としては、ブックマークの時のチャプター名や、
Linuxのevince(document viewer)の様に、画面をスクロールして次のチャプターの領域に入ると自動で、
左のチャプターリストビューの選択もそのチャプターのところに移動してほしいのですが、(クリック扱いになると
チャプターの最初に戻されてしまうので、青い選択が移るだけにしたいのです。)
言葉でうまく説明できなくてすみません
2018/11/06(火) 11:20:08.33ID:VRf3OGgv
>>734
ありがとう!
「独学プログラマー」って本です

これが終わったらdeeplearningの本読んでAI作るんだ・・・道は遠そう
2018/11/06(火) 17:51:56.07ID:Zf4d0x7S
htmlで
<td class=" "><a href=" ">TEXT</a></td>
のうちの<a href>内の" "の中身だけを取り出すにはどうすればいいですか?
2018/11/06(火) 19:12:51.68ID:B9fQWZZ6
>>737
何のモジュール使ってhtmlよんでんだよ


セレニウムなら「href属性 取得 selenium python」でググれ
739724
垢版 |
2018/11/06(火) 20:09:21.47ID:QHiQfJwC
724ですけど、変数内に~~や**があるとそれらもSlack側で以下のように反応してしまいました。

~あいうえお~
と波線で囲めば打ち消し線に、
*あいうえお*
だと、太字です。

記号は記号としてポストするにはどうしたらいいんでしょうか?
2018/11/06(火) 20:13:57.06ID:B9fQWZZ6
*→ *
~→ ~
2018/11/06(火) 20:14:48.35ID:B9fQWZZ6
(´Д`lll)&to#は半角でな
*→ &#126;
~→ &#42;
742724
垢版 |
2018/11/06(火) 20:28:42.52ID:QHiQfJwC
>>741
どうもありがとうございます!
試してみます!
今のところ分かったのはこの3つなんですが、記号類をまとめてちゃんと表示する仕組みってありますか?
今ちょっとググってたら
xml.sax.saxutilsのescapeだと<>はエスケープしてくれそうな感じでした。
743デフォルトの名無しさん
垢版 |
2018/11/06(火) 20:31:38.28ID:0p0MEBcD
"mrkdwn": false
744724
垢版 |
2018/11/06(火) 20:32:44.30ID:QHiQfJwC
あと、混乱してしまってるんですが、変数textの中にもし<、>、*、~のいずれかが含まれてたら、<、>、&#126;、&#42;に置き換えるには、if文でどう書くんでしょうか?
745724
垢版 |
2018/11/06(火) 20:36:27.93ID:QHiQfJwC
何度もすみません
import xml.sax.saxutils from escape

import htmlのhtml.escape
はどう使い分けるんでしょうか?
2018/11/06(火) 20:51:13.02ID:B9fQWZZ6
>>744
findを使ってtextを検索し、-1よりでかい数が帰ってくるかどうかためす。
if text.find(’<’) > -1 or text.find(’>’) > -1 or....(略)
2018/11/06(火) 20:56:52.27ID:B9fQWZZ6
(つづき)
でもってif文のインデントの中に
text=text.replace('before','after').replace('before','after').replace('before','after').replace('before','after')

beforeにはそれぞれ<、>、*、~を入れて
aterには&#42;とかそういうのを書いておく
748724
垢版 |
2018/11/06(火) 20:58:43.90ID:QHiQfJwC
>>746
なるほど!ありがとうございます!

> if text.find(’<’) > -1 or text.find(’>’) > -1 or....(略)
を途中で改行したい場合はどうやるんでしょうか?
バックスラッシュ付けるっぽいんですが、以下だとエラーになります

if text.find(’<’) > -1 or text.find(’>’) > -1 \
or....(略)
749724
垢版 |
2018/11/06(火) 20:59:35.67ID:QHiQfJwC
>>747
ありがとうございます!!
2018/11/06(火) 21:00:46.35ID:B9fQWZZ6
>>745
前者は基本的に & 、 < 、および > が対象 だが 他の文字もエスケープ汁と命令することが可能

後者は & 、 < 、および > が対象
751デフォルトの名無しさん
垢版 |
2018/11/06(火) 21:08:58.42ID:0p0MEBcD
特殊な記号たち
https://api.slack.com/docs/messages/builder?msg=%7B%22text%22%3A%22%60%60%60pre%60%60%60%20*bold*%20%60code%60%20_italic_%20~strike~%22%2C%22username%22%3A%22markdownbot%22%2C%22mrkdwn%22%3Atrue%7D
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況