[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/16 12:29 / Filesize : 299 KB / Number-of Response : 1055
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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

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

前スレ
くだすれPython(超初心者用) その38
https://mevius.5ch.net/test/read.cgi/tech/1526522954/

25 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 01:55:23.42 ID:TJFxEnkY.net]
プログラム初学者ですが、入門書を買って勉強しております。
複合代入演算子の項を見ていたら1点疑問があり、

who = '猫'
text = ''
text += '吾輩は'
text += who
text += 'である。'
print(text)

これ本では2行目の''が大事だと書かれているんですが、省略して


who = '猫'
text = '吾輩は'
text += who
text += 'である。'
print(text)

とするのはだめなのでしょうか?
初歩的な質問ですみません。

26 名前:デフォルトの名無しさん [2018/08/26(日) 02:11:05.36 ID:xGLfO5+N.net]
>>24
text += 'XXX'
で形が揃うから見やすいとかコピペや順序入れ替えが楽って以外の意味はないと思う
というか理由が書いてないならあまり良くない入門書だな

3.6以降ならf-stringを使って
text = f'我輩は{who}である'
のほうが良さげ
https://atsuoishimoto.hatenablog.com/entry/2016/12/25/122220

27 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 02:24:57.28 ID:TJFxEnkY.net]
>>25


28 名前:ありがとうございました。URL参考になりました。
入門書はいろいろ調べてみたんですけどやはり周りに修学者がいないと選びにくいですね。
[]
[ここ壊れてます]

29 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 04:17:09.95 ID:L324XJEs.net]
みんなのpythonって本はプログラム知識が殆ど無い入門者にお勧めできますか?
本屋で立ち読みしようと思ったんですけど無くて、アマゾンで調べたら評価はまちまちみたいで…

30 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 07:36:47.56 ID:w0D5YFHr.net]
この2冊は、既にプログラミングが出来る人向け。
数言語は知っていて、Ruby, Python を学ぶ人向け

たのしいRuby 第5版、2016
みんなのPython 第4版、2017

以下の本は、プログラミング初心者でも読める。
スッキリわかる Java入門 第2版、2014

知らないけど、progate のサイトで勉強すれば?

31 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 07:44:31.55 ID:KclbjBGL.net]
>>24
同じように動くという意味では問題無い。


著者としては空の変数を定義することで
変数の宣言と値の代入を分離したかったんじゃないかな?
pythonでは変数を明示的に宣言だけすることはできないから、

32 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 07:49:32.68 ID:KclbjBGL.net]
>>27
合うか合わないかは人によるから
kindleでお試し読んでみたら

33 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 07:58:14.06 ID:L324XJEs.net]
>>28
スッキリわかるjavaはやりました
なのでその次に読む本として選んでみました。大丈夫そうですか?
簡単だと良いんですが



34 名前:25 mailto:sage [2018/08/26(日) 09:57:49.56 ID:w0D5YFHr.net]
読む順番としては、先に「たのしいRuby」を3回読むと、
「みんなのPython」が楽に読める

「みんなのPython」を先に読むと、内容が薄くて、現実味が無いかも。
つまり、よくわからない

たのしいの方が、正規表現とか、内容が濃い

35 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 10:32:43.51 ID:L324XJEs.net]
>>32
そうなんですね。みんなのpythonの方が表紙にでっかく絵が書いてあったり
堅苦しい内容じゃなさそうで入門向けで良いのかなって思ったんですが内容ないんですね…
わかりました。たのしいruby買います。アドバイスありがとうございます

36 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 12:18:03.60 ID:Y1vMA8RK.net]
>>33
そいつは有名なruby荒らしだぞ。
python勉強するのになんでruby本読む必要があるんだよ。よく考えろ

37 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 17:39:56.34 ID:O9adGcKd.net]
もうrubyをNGしてもいいぐらい

38 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 18:15:35.15 ID:wR7TFJf0.net]
ガイジに優しくしよう

39 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 19:59:11.67 ID:7VGl0ROF.net]
脈略のないrubyコードの貼り付け、ruby本の紹介は禁止ってテンプレに入れておいてくれ

40 名前:25 [2018/08/26(日) 23:41:34.26 ID:w0D5YFHr.net]
Ruby, Python, JavaScript というのは、単なる各言語の文法書。
プログラミングの本じゃない

オブジェクト指向・クロージャ・スコープ・this などの概念を、学べるわけではない。
文法書を読んでも、プログラミングは出来ない

文法書を読むとプログラミングができると、ほとんどの奴は勘違いしているけど、
「みんなのPython」を読んでも文法がわかるだけで、プログラミングが出来るようにはならない

「たのしいRuby」「スッキリわかる Java入門」などを読んで、
自分でクラスを派生させたり、CSVファイルを読み書きしたり、
Sinatra をいじくりまわしたり悪戦苦闘しながら、プログラミングを学ぶ

プログラミングを学ぶ部分は、Pythonじゃなくてもよい。
いじくりまわすのには、Rubyが最も簡単

プログラミングを学ぶには、各言語の「Effective 何々」という本を読む。
これは、プロの必須本。
文法書の次のレベルへ行かないと、プログラミング自体を学べない

41 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 00:26:43.00 ID:lvpUeXXJ.net]
Rubyは衰退していくだけのオワコン言語だから手を出したら負け組だよ

42 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 00:53:03.94 ID:HhBAi2Wr.net]
Rubyみたいなオワコン言語の話は余所でやれ

43 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 02:33:22.67 ID:+WOcodwf.net]
スクリプトのやり方教えて下さい
認識できないって出るんですけど…



44 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 03:15:17.22 ID:yTR9Y+Mn.net]
>>27
プログラミング未経験でオライリーの入門Pythonを買ってがんばってる
今のところついていけてるけど、
みんなのPythonはきっとイラストや絵が入ってて紙面もカラーなんだろうなって考えるとうらやましい
こっちは絵もイラストも全くないです

45 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 03:17:20.38 ID:yTR9Y+Mn.net]
早速躓いた

>>29
変数

値の代入
ってとうちがうんですか?

46 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 03:21:04.08 ID:yTR9Y+Mn.net]
プログラミング自体を学ぶのにこれはどうですか?

初めてのプログラミング
https://www.oreilly.co.jp/books/9784873114699/

PythonじゃなくてRubyで説明されてるみたいなんですけど

47 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 06:12:09.02 ID:ba8BcfX3.net]
与えられた2つの数値から、最小公倍数・最大公約数を求めてみろ

48 名前:デフォルトの名無しさん [2018/08/27(月) 07:06:23.18 ID:A3+vkFVR.net]
>>44
pythonなら「独学プログラマーーpython」がある。

49 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 07:25:20.50 ID:fqwvA6xk.net]
スタートブックとかの方が分かりやすいんじゃないの?
プログラム初心者なら

50 名前:デフォルトの名無しさん [2018/08/27(月) 12:18:58.34 ID:Q4eMB8Ps.net]
>>45
互除法

51 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 21:06:47.86 ID:KW/ftoFq.net]
subprocessについてなんですが、

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import sys
import subprocess


dl = subprocess.run(["radigo", "rec", "-a=JP13", "-id=QRR", "-s=20180827200000"], stdout=subprocess.PIPE)
sys.stdout.buffer.write(dl.stdout)

上記のような場合、変数を引数の一部として渡すにはどうやるんですか?
以下だと{proglamId}という文字列として外部コマンドに送られてしまってダメでした。

area = 'JP13'
ch = 'QRR'
proglamId = '20180827200000'
dl = subprocess.run(["radigo", "rec", "-a={area}", "-id={ch}", "-s={proglamId}"], stdout=subprocess.PIPE)
sys.stdout.buffer.write(dl.stdout)

52 名前:デフォルトの名無しさん [2018/08/27(月) 21:26:41.39 ID:6eK9kwOU.net]
>>49

>>> proglamId = '20180827200000'
>>> f'-s={proglamId}'
'-s=20180827200000'

53 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 21:33:33.15 ID:KW/ftoFq.net]
>>50
どうもありがとうございます。
2行目はfフォーマットって言うんですかね?それを使っていると思うんですが、46のsubprocessの中ではどう書くんでしょうか?



54 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 21:56:03.71 ID:KW/ftoFq.net]
>>51
出来ました。

パターン1
area = 'JP13'
ch = 'QRR'
proglamId = '20180827200000'
dl = subprocess.run(["radigo", "rec", f'-a={area}', f'-id={ch}', f'-s={proglamId}'], stdout=subprocess.PIPE)

パターン2
area = 'JP13'
area = f'-a={area}'
ch = 'QRR'
ch = f'-id={ch}'
proglamId = '20180827200000'
proglamId = f'-s={proglamId}'
dl = subprocess.run(["radigo", "rec", area, ch, proglamId], stdout=subprocess.PIPE)
sys.stdout.buffer.write(dl.stdout)



55 名前:チちがスマートな書き方ですか? []
[ここ壊れてます]

56 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 23:29:37.66 ID:KW/ftoFq.net]
muxx = subprocess.run(["muxer", f'-i input.aac?sbr', f'-o output.m4a', f'--optimize-pd', f'--file-format m4a'], stdout=subprocess.PIPE)
sys.stdout.buffer.write(muxx.stdout)

とやると、muxerコマンドからは
Error: you specified invalid option: -i input.aac?sbr.
と返ってきてしまいます。

muxx = subprocess.run(["muxer", "-i input.aac?sbr", "-o output.m4a", "--optimize-pd", "--file-format m4a"], stdout=subprocess.PIPE)
sys.stdout.buffer.write(muxx.stdout)
これでも上記と同じエラーになり、

muxx = subprocess.run([f'muxer -i input.aac?sbr -o output.m4a --optimize-pd --file-format m4a'], stdout=subprocess.PIPE)
sys.stdout.buffer.write(muxx.stdout)
これだとPythonがエラーになってしまいました。

Usageは
muxer [global_options] -i input1 [-i input2 -i input3 ...] -o output
です。

コンソールで以下のようにやると正常に動いてくれます。
$ muxer -i input.aac?sbr -o output.m4a --optimize-pd --file-format m4a
何がいけないんでしょうか?

57 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 00:20:33.07 ID:TEJeUOom.net]
端末で入力すると、シェルが、? の機能を動かすけど、

subprocess で、プロセスを直接起動すると、
シェルが介入しないから、? が展開されないとか?

58 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 00:26:18.50 ID:wjmNvrcp.net]
>>54
?sbrの部分を省いてもエラーは改善しなかったです

59 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 05:00:41.28 ID:PEha72vP.net]
shell=true
とかは? と muxer なんて知らないくせに適当に言ってみる

60 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 05:07:01.91 ID:PEha72vP.net]
ん?
その前に
stdout=subprocess.PIPE)
sys.stdout.buffer.write(muxx.stdout)
の部分って必要なの?

61 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 08:35:42.53 ID:M3D05fOs.net]
>>53
もちろんrunの第一引数が悪い
"-i"と"input.aac"を分けろ

62 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 08:36:39.19 ID:skYXWt6l.net]
>>53
上2つは "-i input.aac?sbr" がオプションとして認識されてそう。'-i', f'input.aac?sbr' とかで分けてくれ
3つ目は shell=True で動く(/bin/sh -c 'muxer ....' と展開される)
シェルインジェクションとかあるので、お作法として shell=True はあまり使わないほうがいいかな
詳しくはマニュアル参照

>>52
書き方は好みだからなんとも言えんなー俺ならこんな感じで書く
arg = 'hoge'
cmd = f'bash tst_cmd.sh {arg}'
resp = subprocess.run(cmd.split(), stdout=subprocess.PIPE)

スペース入りファイル名とか使うなら、パーサー作って食わすかな
import csv
def CMD_PARSER(cmd):
....return list(csv.reader([cmd], delimiter=' ', quotechar='"'))[0]

arg = 'hoge foo'
cmd = f'bash tst_cmd.sh "{arg}"'
resp = subprocess.run(CMD_PARSER(cmd), stdout=subprocess.PIPE)

63 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 08:39:26.15 ID:M3D05fOs.net]
空白が混じってると
> 一般に、引数のシーケンスを渡す方が望ましいです。なぜなら、モジュールが必要な引数のエスケープやクオート
> (例えばファイル名中のスペースを許すこと) の面倒を見ることができるためです
によってエスケープされるので意図通りにシステムコールに渡らないわけだな



64 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 10:16:39.79 ID:wjmNvrcp.net]
みなさんどうもありがとうございます

>>58
>>59
>>60
「-i ファイル名」の形式で書かないといけないので「-i」と「ファイル名」で分けて書くという頭が全くなかったです。

muxx = subprocess.run(["muxer", "-i", "input.aac?sbr", "-o", "output.m4a", "--optimize-pd", "--file-format", "m4a"], stdout=subprocess.PIPE)
と分けて書くとうまくいきました。

>>56
>>59
shell=trueについて調べてみます

>>57
この書き方だとsubprocess.callとsubprocess.check_callとsubprocess.check_outputの3つがまとめて出来るらしいのでこれで書きました []
[ここ壊れてます]

66 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 14:55:03.72 ID:WFu4qQCr.net]
find関数で
line.find('a')だと部分一致で返してくれるんですが
c=input() aと入力して
line.find(c)とすると完全一致でしか返してくれないんですがどうすればいいですか

67 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 16:02:01.79 ID:eDasHWl3.net]
んなこたぁない。

68 名前:デフォルトの名無しさん [2018/08/29(水) 09:39:33.95 ID:t35BnR1i.net]
python3m ってなんですか?

69 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 10:09:58.87 ID:zNgJ3vFs.net]
住友と関係が?

70 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 17:38:59.31 ID:zHN7x4pt.net]
xmlの属性を指定する場合、以下のどっちも同じ答えを返してくれるんですが、どっちで書くのがいいんでしょうか?

パターン1
duration1 = int(root.attrib["dur"])
print(duration1)

パターン2
duration2 = int(root.get("dur"))
print(duration2)

71 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 19:50:21.16 ID:+JD/mPB3.net]
BeautifulSoup前提で喋ってます?
もしそうなら、属性が存在する限りどちらでもよい
getは属性が存在しないときNoneを返すが、attribはそうではない
まあ試してみ

72 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 19:54:41.40 ID:zHN7x4pt.net]
>>67
どうもありがとうございます
xml.etree.ElementTreeです
たしかに存在しない場合の挙動は違ってました

73 名前:デフォルトの名無しさん [2018/08/29(水) 21:03:23.42 ID:LyGOIS06.net]
すいません日付の計算で疑問なんですが、

aaa_date_str = '2018-08-29 20:00:00'
bbb_date_str = '2018-08-29 19:00:00'

aaa_date = datetime.datetime.strptime(aaa_date_str, '%Y-%m-%d %H:%M:%S')
bbb_date = datetime.datetime.strptime(bbb_date_str, '%Y-%m-%d %H:%M:%S')


として、

date_diff = aaa_date - bbb_date
print(date_diff.days)
--> 0

になりますが、逆にすると、

date_diff = bbb_date - aaa_date
print(date_diff.days)
--> -1

になります。

差異が1日に満たなければゼロになるのかと思いきや
計算結果が負だとゼロにならずに-1になるのがなんか疑問です。
それとも記述に問題あるでしょうか。



74 名前:デフォルトの名無しさん [2018/08/29(水) 21:09:31.82 ID:GQLl9uCt.net]
>>69
3.0-3.1=-0.1だろう?0じゃないだろう?
そういうこった

75 名前:デフォルトの名無しさん [2018/08/30(木) 10:23:36.80 ID:S/vwwZyF.net]
int()とかと一緒か
[0.5]=0
[-0.5]=-1

76 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 21:55:04.51 ID:hf8/OGEv.net]
>>70
すいません、分からず…

逆に、3.1 - 3.0 = 0.1 はdaysだと0になるんです。

>>71
int()だと、正も負も小数点以下切り捨てではないですか?

77 名前:デフォルトの名無しさん [2018/08/30(木) 21:59:01.86 ID:Ffnu7dR5.net]
>>72
68が言ってるようにたぶん四捨五入なんだず

78 名前:デフォルトの名無しさん [2018/08/30(木) 21:59:56.98 ID:Ffnu7dR5.net]
おっと 1時間でも -1ってでるのか
じゃあ
時間は切り捨てじゃなくて四捨五入でもなくて切り上げになってんだ

79 名前:デフォルトの名無しさん [2018/08/30(木) 22:19:45.36 ID:Ffnu7dR5.net]
おっと
おれのうしろで
おれのいもうとが
「そのマイナス1はエラー値であって 数値じゃない diff.daysはぬるぽしない」
といっている

80 名前:デフォルトの名無しさん [2018/08/30(木) 22:29:53.78 ID:Ffnu7dR5.net]
それから
なぜ print(date_diff)してみないんだ
ともいっている

81 名前:デフォルトの名無しさん [2018/08/30(木) 22:42:08.44 ID:Ffnu7dR5.net]
おれは
aaa_date + date_diff
をためしてみてから、
timedeltaについての説明を読みに行くことを最終的におすすぬする。

82 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 23:01:55.56 ID:TEO8FkA/.net]
別マシンで書いたスクリプトを動かそうとしたら
dateutilが無いと言われ実行出来ません。

スクリプトにはこう書きました。
from dateutil.relativedelta import relativedelta

動いたマシンのPythonのバージョンは3.6.4、
動かないマシンのPythonのバージョンは3.6.5です。

dateutilはどこで入手するんでしょうか?

83 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 23:04:27.25 ID:TEO8FkA/.net]
すみません
pip で dateutilsを入れたら使えました。



84 名前:デフォルトの名無しさん [2018/08/31(金) 04:09:39.70 ID:rWvqNQHt.net]
python 3.6
windows10

import pyautogui

pyautogui.rightClick(100,100)
pyautogui.moveRel(10,10)

と書くと右クリックのあとマウスが動いてくれない。
これはライブラリのバグ?

85 名前:デフォルトの名無しさん [2018/08/31(金) 04:37:56.39 ID:rWvqNQHt.net]
ごめん動いてた

86 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 09:38:10.61 ID:cxARIA2x.net]
罰としてお前の

87 名前:ヒ起という突起をクリックしてやる []
[ここ壊れてます]

88 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 19:38:51.59 ID:IH56D7c/.net]
Dropboxの共有リンクを取得したいです。
dropbox.Dropbox(トークン).sharing_create_shared_link
を使うと、例えば
PathLinkMetadata(url='https://db.tt/xxxxxxx', visibility=Visibility('public', None), path='/hoge/hage.jpg', expires=None)
こういう1行が出力されます。
sharing_create_shared_link以外の関数で、
https://db.tt/xxxxxxxだけを出力する関数ってありますか?

続く

89 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 19:39:30.70 ID:IH56D7c/.net]
sharing_create_shared_linkだと、以下のようになります。

import dropbox

dbxTOKEN = 'DROPBOX_MY_ACCESS_TOKEN'
dbxRemotePath = f'/aiueo/hage.jpg'
dbx = dropbox.Dropbox(dbxTOKEN)
dbx.users_get_current_account()

# アップロード
f = open(dbxLocalPath, 'rb')
dbx.files_upload(f.read(),dbxRemotePath)
f.close()

# 共有リンクの取得
dbxLink = dbx.sharing_create_shared_link(dbxRemotePath,short_url=True) # Dropbox から共有リンクを取得
dbxLink = str(dbxLink)[17:-1] # 整形 「PathLinkMetadata(」と「)」を除外
dbxLink = dbxLink.split(',') # リストに変換
dbxLink = dbxLink[0] # リストの1番目 (url)
dbxLink = str(dbxLink)[5:-1] # 整形
print(dbxLink)

https://db.tt/xxxxxxx # プリントされたurl

つづく

90 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 19:40:14.75 ID:IH56D7c/.net]
文字列を分割してその中の一部を取り出す方法ですが、
PathLinkMetadata(url='https://db.tt/xxxxxxx', visibility=Visibility('public', None), path='/hoge/hage.jpg', expires=None)
こういう1行があったとして、

url='https://db.tt/xxxxxxx',
visibility=Visibility('public', None),
path='/hoge/hage.jpg',
expires=None

こんなふうに分割したいです。
split(',')でやるとpublic', Noneここのコンマでも反応してしまいます。
今回はurlの取得が目的なので今の所実害は無いんですが、もっと簡単にdorpboxの共有リンクを取得したり確実な文字列の分割方法を知りたいです。

91 名前:デフォルトの名無しさん [2018/09/01(土) 12:32:11.32 ID:Z1lBiRzX.net]
>>85
ずいぶん遠回りしてるけど、
a=dropbox.Dropbox(トークン).sharing_create_shared_link
として、
a.url
を参照すれば良いのでは?
他についても
a.path とかで参照できるはず

92 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 15:22:01.82 ID:5RO4iQNV.net]
すいません、ハマって困っています。

utf-8のテキストファイル(内容は'1'という文字のみ)を、python3の以下のスクリプトで
読み込んで、整数に変換しようとすると、以下のエラーが出て困っています。
Traceback (most recent call last):
File "collect_progress.py", line 75, in <module>
num = int(str)
ValueError: invalid literal for int() with base 10: '\ufeff1'
ユニコードの文字列は整数変換できないのでしょうか。

fr = open("sample.txt")
str = fr.readline()
num = int(str)

93 名前:デフォルトの名無しさん [2018/09/01(土) 15:26:08.43 ID:VfnjVYeD.net]
BOMついてないか



94 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 15:37:12.61 ID:kUpkBQ3x.net]
echo 1 | ruby -e 'STDIN.each { |line| puts(line.to_i + 1) }'

Ruby なら、シェルから、1-liner で、2 と出力される

Python でも同じように、1-liner でやってみれば?

95 名前:デフォルトの名無しさん [2018/09/01(土) 15:55:11.65 ID:A/mNPeDe.net]
>>87
open("sample.txt", encoding="utf-8-sig")

> いくつかの領域では、UTF-8 でエンコードされたファイルの先頭に "BOM" を利用する習慣があります;

中略
> もし、そのようなファイルを読む場合には、この印を自動

96 名前:的にスキップするために 'utf-8-sig' コーデックを利用してください。
https://docs.python.org/ja/3/howto/unicode.html#reading-and-writing-unicode-data
[]
[ここ壊れてます]

97 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 16:02:39.43 ID:kUpkBQ3x.net]
プログラムでは、BOMなしUTF-8 (UTF-8N)を使った方が無難

その代わり、Windows のExplorer ではテキスト検索できなくなるから、
Windows10・WSL・Ubuntu から、grep してる

98 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 16:30:27.70 ID:eWdCnGo4.net]
>>86
どうもありがとうございます!
.urlなどで簡単に取り出せました。
これはdropboxのライブラリの機能でしょうか?

99 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 16:55:46.47 ID:5RO4iQNV.net]
>>88, 86, 87, 88
ありがとうございます。
BOMが原因でした。

恥ずかしいことに、BOMというのは全く知りませんでした。
助かりました。

100 名前:デフォルトの名無しさん [2018/09/01(土) 20:51:46.35 ID:5sfxmNQl.net]
>>92
まあそうだと思う。
自分はDropboxライブラリを使ったことはないけど、>>83を見ると戻り値としてPathLinkMetadataオブジェクトが返ってきていて、属性としてurlとかpathとかがある事がわかった(これはpython的に考えればわかる)

使うメソッドとかについてはドキュメント読むと今回みたいなことはすぐ分かるだろうし、勉強にもなるよ

101 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 23:59:25.43 ID:eWdCnGo4.net]
>>94
.sharing_create_shared_linkはドキュメントの中で見つけた関数なんですが、英語分からないから試行錯誤していました
ありがとうございます

102 名前:デフォルトの名無しさん [2018/09/02(日) 05:35:01.36 ID:0w6R8dvF.net]
Python初心者(プログラミング初心者)です。
スクレイピングをしようとしていたら躓いてしまったので質問をさせてください。
requestsで変数htmlに入れたサイトのhtmlをファイルに保存したいのですが良く分かりませんでした。
file.writeみたいなのも書いてみてるんですがエラー吐かれたりします。誰か例として作ってくれませんか?
requests.getで変数htmlに取得したサイトhtmlをc:/user/hoge/Documents/hymlfile.htmlに追記モードで保存したいです。
無能でごめんなさい助けてください。

103 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 07:13:26.28 ID:5WqNet32.net]
File.open(file_path, 'a') { |io| io.write text }

Ruby では、File.open の引数に、
ファイルパスと、ファイルを開く際の、mode を渡す

a なら追記書き込み

「python file write」で検索!



104 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 08:24:22.51 ID:GLq4HnWW.net]
import requests

r = requests.get("https://www.python.org")
f = open("c:/user/hoge/Documents/hymlfile.html", "a")
f.write(r.text)

105 名前:デフォルトの名無しさん [2018/09/02(日) 09:00:47.26 ID:0w6R8dvF.net]
>>98
てゃんks
無事解決しました本当にありがとう
やっと眠れtる

106 名前:デフォルトの名無しさん [2018/09/02(日) 16:47:00.30 ID:RE+xVvI9.net]
f.write(r.text)

UnicodeEncodeError: 'cp932' codec can't encode character '\U0001f5a5' in position 12657: illegal multibyte sequence

スクレイピングしたサイトに絵文字があると(?)このエラーが起こるようです。
エンコーディングの関係だと思うんですけど対処法分かる方いますか?
UnicodeEncodeErrorで調べたら解説しているところが少し見つかったんですが僕には何が言いたいのかさっぱりでした。。。。

107 名前:デフォルトの名無しさん [2018/09/02(日) 16:56:55.96 ID:RE+xVvI9.net]
f.openの時にencoding='utf-8'渡したら解決しました!!
うれしい!!!ありがとう

108 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 16:59:32.33 ID:5WqNet32.net]
cp932 はやめて、BOMなしUTF-8(UTF-8N)で書き込めば?

それか、エンコード

109 名前:変換できない文字は、
エラーにせずに、? に置き換えるとか
[]
[ここ壊れてます]

110 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 17:49:53.80 ID:B4IY8jcq.net]
ElementTree、lxml、BeautifulSoupってそれぞれどう違うの?

111 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 17:51:26.55 ID:B4IY8jcq.net]
ElementTreeは純正
lxml、BeautifulSoupはサードパーティ

lxmlは高速だけど、動的なサイトに弱い
BeautifulSoupは比較的簡単

って感じ?

112 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 19:12:56.97 ID:dvfcpVZJ.net]
何が言いたいのか

113 名前:デフォルトの名無しさん [2018/09/02(日) 19:26:55.59 ID:/VgxTU/I.net]
開けっ放しにするんはいけんよ



114 名前:デフォルトの名無しさん mailto:sage [2018/09/02(日) 20:28:17.67 ID:NdoNeabl.net]
lxml 言う程速さを感じないんだよな

115 名前:デフォルトの名無しさん mailto:sage [2018/09/03(月) 01:13:17.00 ID:IUTdxFc1.net]
import requests
from lxml import etree

url = example.com
res = requests.get(url)
res.raise_for_status()
xmlroot = etree.fromstring(res.content)
progroot = xmlroot.find(なになに)
aaa = progroot.find(info)
print(aaa)

<Element info at xxxxxx>
がプリントされます。

aaa = progroot.find(info).text
とすると、

<div class="station_content_description "><table border="0" cellpadding="5" > <tr> <td style="padding: 5px;">
<img src="https://example.com/aaa.jpg" height="60" width="60"alt="ふじこ"></td> </tr></table><br />
<br /> あいうえお<br />かきくけこ
<br /><br /> 番組Webサイト:<a href="example.com/">http://example.com/</a><br />
メッセージフォーム:<a href="example.com/mail.html">http://example.com/mail.html</a><br />
<br /></div>

がプリントされます。(投稿できなかったので途中で改行してます)
次に、本文はどうやって取り出すんでしょうか?

116 名前:デフォルトの名無しさん mailto:sage [2018/09/03(月) 01:49:47.20 ID:BfF9DJB1.net]
要素の内側のテキストを収集するためには、itertext() を参照してください。例えば "".join(element.itertext()) のようにします。

117 名前:デフォルトの名無しさん [2018/09/03(月) 19:12:05.50 ID:ttVcJTrG.net]
Ruby のNokogiri なら、CSS セレクター・XPath とか

jQuery でも、CSSセレクター

118 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 00:43:50.19 ID:YKdnoVr6.net]
```python
hstg = info.get('hashtags')
print(hstg)

# hashtag

p_url = info['url']['short']
```

p_urlの行をget()だとどう書けばいいですか
辞書にアクセスした時存在しないキーだとNoneを返したいんでget()を使いたいんですが

119 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 01:06:41.32 ID:9wgcxN1e.net]
ようわからんが
info.get('url', {}).get('short')
とか?

若干無駄があるがこの程度の無駄が気になる神経症はCでも書いとけ

120 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 02:03:26.11 ID:YKdnoVr6.net]
>>112
どうもありがとうございます!
試してみます。
{}の中に'short'が入るイメージでしょうか?

121 名前:デフォルトの名無しさん [2018/09/06(木) 14:42:12.77 ID:tPMc56fx.net]
馬鹿はオウム返しですぐ次の質問するよね

122 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 15:13:17.47 ID:QdhwFBW3.net]
python 3.6.3
tkinter でファンクションキーを押したら文字列を表示させたいです

def text _desp(event):
  label["text"] ="bcdef"

label =tk.Label(root, text ="aaaaa", )
label.bind('<F1>', text_desp)
label.pack

と書いて、表示したウィンドウをアクティブにしてからF1を押してもtextが入れ替わりません
原因は何でしょうか?

123 名前:デフォルトの名無しさん [2018/09/06(木) 16:49:56.62 ID:ntAiYVJq.net]
インタプリタ言語最強



124 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 17:12:39.45 ID:QdhwFBW3.net]
>>115
rootにbindしたらいけました
すみません

125 名前:デフォルトの名無しさん mailto:sage [2018/09/06(木) 18:22:16.04 ID:t3mpF7WK.net]
VSCodeの「ターミナルで選択範囲/行を実行」って機能をよく使うんですけど
作ってる最中のfor文内(1行目がインデントしてるテキスト)をテストしたいときは
インデントを一時的に消して実行するしか無いんですかね?

IPythonなら1行目がインデントしてても実行してくれるけど
あれはターミナルにフォーカスを移してEnterを押さないと






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<299KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef