このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで
前スレ
くだすれPython(超初心者用) その38
https://mevius.5ch.net/test/read.cgi/tech/1526522954/
探検
くだすれPython(超初心者用) その39
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/08/24(金) 07:50:35.97ID:VD4/++xS2018/08/27(月) 23:29:37.66ID:KW/ftoFq
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
何がいけないんでしょうか?
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
何がいけないんでしょうか?
2018/08/28(火) 00:20:33.07ID:TEJeUOom
端末で入力すると、シェルが、? の機能を動かすけど、
subprocess で、プロセスを直接起動すると、
シェルが介入しないから、? が展開されないとか?
subprocess で、プロセスを直接起動すると、
シェルが介入しないから、? が展開されないとか?
2018/08/28(火) 00:26:18.50ID:wjmNvrcp
>>51
?sbrの部分を省いてもエラーは改善しなかったです
?sbrの部分を省いてもエラーは改善しなかったです
2018/08/28(火) 05:00:41.28ID:PEha72vP
shell=true
とかは? と muxer なんて知らないくせに適当に言ってみる
とかは? と muxer なんて知らないくせに適当に言ってみる
2018/08/28(火) 05:07:01.91ID:PEha72vP
ん?
その前に
stdout=subprocess.PIPE)
sys.stdout.buffer.write(muxx.stdout)
の部分って必要なの?
その前に
stdout=subprocess.PIPE)
sys.stdout.buffer.write(muxx.stdout)
の部分って必要なの?
2018/08/28(火) 08:35:42.53ID:M3D05fOs
2018/08/28(火) 08:36:39.19ID:skYXWt6l
>>50
上2つは "-i input.aac?sbr" がオプションとして認識されてそう。'-i', f'input.aac?sbr' とかで分けてくれ
3つ目は shell=True で動く(/bin/sh -c 'muxer ....' と展開される)
シェルインジェクションとかあるので、お作法として shell=True はあまり使わないほうがいいかな
詳しくはマニュアル参照
>>49
書き方は好みだからなんとも言えんなー俺ならこんな感じで書く
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)
上2つは "-i input.aac?sbr" がオプションとして認識されてそう。'-i', f'input.aac?sbr' とかで分けてくれ
3つ目は shell=True で動く(/bin/sh -c 'muxer ....' と展開される)
シェルインジェクションとかあるので、お作法として shell=True はあまり使わないほうがいいかな
詳しくはマニュアル参照
>>49
書き方は好みだからなんとも言えんなー俺ならこんな感じで書く
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)
2018/08/28(火) 08:39:26.15ID:M3D05fOs
空白が混じってると
> 一般に、引数のシーケンスを渡す方が望ましいです。なぜなら、モジュールが必要な引数のエスケープやクオート
> (例えばファイル名中のスペースを許すこと) の面倒を見ることができるためです
によってエスケープされるので意図通りにシステムコールに渡らないわけだな
> 一般に、引数のシーケンスを渡す方が望ましいです。なぜなら、モジュールが必要な引数のエスケープやクオート
> (例えばファイル名中のスペースを許すこと) の面倒を見ることができるためです
によってエスケープされるので意図通りにシステムコールに渡らないわけだな
2018/08/28(火) 10:16:39.79ID:wjmNvrcp
みなさんどうもありがとうございます
>>55
>>56
>>57
「-i ファイル名」の形式で書かないといけないので「-i」と「ファイル名」で分けて書くという頭が全くなかったです。
muxx = subprocess.run(["muxer", "-i", "input.aac?sbr", "-o", "output.m4a", "--optimize-pd", "--file-format", "m4a"], stdout=subprocess.PIPE)
と分けて書くとうまくいきました。
>>53
>>56
shell=trueについて調べてみます
>>54
この書き方だとsubprocess.callとsubprocess.check_callとsubprocess.check_outputの3つがまとめて出来るらしいのでこれで書きました
>>55
>>56
>>57
「-i ファイル名」の形式で書かないといけないので「-i」と「ファイル名」で分けて書くという頭が全くなかったです。
muxx = subprocess.run(["muxer", "-i", "input.aac?sbr", "-o", "output.m4a", "--optimize-pd", "--file-format", "m4a"], stdout=subprocess.PIPE)
と分けて書くとうまくいきました。
>>53
>>56
shell=trueについて調べてみます
>>54
この書き方だとsubprocess.callとsubprocess.check_callとsubprocess.check_outputの3つがまとめて出来るらしいのでこれで書きました
2018/08/28(火) 14:55:03.72ID:WFu4qQCr
find関数で
line.find('a')だと部分一致で返してくれるんですが
c=input() aと入力して
line.find(c)とすると完全一致でしか返してくれないんですがどうすればいいですか
line.find('a')だと部分一致で返してくれるんですが
c=input() aと入力して
line.find(c)とすると完全一致でしか返してくれないんですがどうすればいいですか
2018/08/28(火) 16:02:01.79ID:eDasHWl3
んなこたぁない。
61デフォルトの名無しさん
2018/08/29(水) 09:39:33.95ID:t35BnR1i python3m ってなんですか?
2018/08/29(水) 10:09:58.87ID:zNgJ3vFs
住友と関係が?
2018/08/29(水) 17:38:59.31ID:zHN7x4pt
xmlの属性を指定する場合、以下のどっちも同じ答えを返してくれるんですが、どっちで書くのがいいんでしょうか?
パターン1
duration1 = int(root.attrib["dur"])
print(duration1)
パターン2
duration2 = int(root.get("dur"))
print(duration2)
パターン1
duration1 = int(root.attrib["dur"])
print(duration1)
パターン2
duration2 = int(root.get("dur"))
print(duration2)
2018/08/29(水) 19:50:21.16ID:+JD/mPB3
BeautifulSoup前提で喋ってます?
もしそうなら、属性が存在する限りどちらでもよい
getは属性が存在しないときNoneを返すが、attribはそうではない
まあ試してみ
もしそうなら、属性が存在する限りどちらでもよい
getは属性が存在しないときNoneを返すが、attribはそうではない
まあ試してみ
2018/08/29(水) 19:54:41.40ID:zHN7x4pt
66デフォルトの名無しさん
2018/08/29(水) 21:03:23.42ID:LyGOIS06 すいません日付の計算で疑問なんですが、
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になるのがなんか疑問です。
それとも記述に問題あるでしょうか。
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になるのがなんか疑問です。
それとも記述に問題あるでしょうか。
67デフォルトの名無しさん
2018/08/29(水) 21:09:31.82ID:GQLl9uCt68デフォルトの名無しさん
2018/08/30(木) 10:23:36.80ID:S/vwwZyF int()とかと一緒か
[0.5]=0
[-0.5]=-1
[0.5]=0
[-0.5]=-1
2018/08/30(木) 21:55:04.51ID:hf8/OGEv
70デフォルトの名無しさん
2018/08/30(木) 21:59:01.86ID:Ffnu7dR5 >>69
68が言ってるようにたぶん四捨五入なんだず
68が言ってるようにたぶん四捨五入なんだず
71デフォルトの名無しさん
2018/08/30(木) 21:59:56.98ID:Ffnu7dR5 おっと 1時間でも -1ってでるのか
じゃあ
時間は切り捨てじゃなくて四捨五入でもなくて切り上げになってんだ
じゃあ
時間は切り捨てじゃなくて四捨五入でもなくて切り上げになってんだ
72デフォルトの名無しさん
2018/08/30(木) 22:19:45.36ID:Ffnu7dR5 おっと
おれのうしろで
おれのいもうとが
「そのマイナス1はエラー値であって 数値じゃない diff.daysはぬるぽしない」
といっている
おれのうしろで
おれのいもうとが
「そのマイナス1はエラー値であって 数値じゃない diff.daysはぬるぽしない」
といっている
73デフォルトの名無しさん
2018/08/30(木) 22:29:53.78ID:Ffnu7dR5 それから
なぜ print(date_diff)してみないんだ
ともいっている
なぜ print(date_diff)してみないんだ
ともいっている
74デフォルトの名無しさん
2018/08/30(木) 22:42:08.44ID:Ffnu7dR5 おれは
aaa_date + date_diff
をためしてみてから、
timedeltaについての説明を読みに行くことを最終的におすすぬする。
aaa_date + date_diff
をためしてみてから、
timedeltaについての説明を読みに行くことを最終的におすすぬする。
2018/08/30(木) 23:01:55.56ID:TEO8FkA/
別マシンで書いたスクリプトを動かそうとしたら
dateutilが無いと言われ実行出来ません。
スクリプトにはこう書きました。
from dateutil.relativedelta import relativedelta
動いたマシンのPythonのバージョンは3.6.4、
動かないマシンのPythonのバージョンは3.6.5です。
dateutilはどこで入手するんでしょうか?
dateutilが無いと言われ実行出来ません。
スクリプトにはこう書きました。
from dateutil.relativedelta import relativedelta
動いたマシンのPythonのバージョンは3.6.4、
動かないマシンのPythonのバージョンは3.6.5です。
dateutilはどこで入手するんでしょうか?
2018/08/30(木) 23:04:27.25ID:TEO8FkA/
すみません
pip で dateutilsを入れたら使えました。
pip で dateutilsを入れたら使えました。
77デフォルトの名無しさん
2018/08/31(金) 04:09:39.70ID:rWvqNQHt python 3.6
windows10
import pyautogui
pyautogui.rightClick(100,100)
pyautogui.moveRel(10,10)
と書くと右クリックのあとマウスが動いてくれない。
これはライブラリのバグ?
windows10
import pyautogui
pyautogui.rightClick(100,100)
pyautogui.moveRel(10,10)
と書くと右クリックのあとマウスが動いてくれない。
これはライブラリのバグ?
78デフォルトの名無しさん
2018/08/31(金) 04:37:56.39ID:rWvqNQHt ごめん動いてた
2018/08/31(金) 09:38:10.61ID:cxARIA2x
罰としてお前の突起という突起をクリックしてやる
2018/08/31(金) 19:38:51.59ID:IH56D7c/
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だけを出力する関数ってありますか?
続く
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だけを出力する関数ってありますか?
続く
2018/08/31(金) 19:39:30.70ID:IH56D7c/
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
つづく
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
つづく
2018/08/31(金) 19:40:14.75ID:IH56D7c/
文字列を分割してその中の一部を取り出す方法ですが、
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の共有リンクを取得したり確実な文字列の分割方法を知りたいです。
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の共有リンクを取得したり確実な文字列の分割方法を知りたいです。
83デフォルトの名無しさん
2018/09/01(土) 12:32:11.32ID:Z1lBiRzX >>82
ずいぶん遠回りしてるけど、
a=dropbox.Dropbox(トークン).sharing_create_shared_link
として、
a.url
を参照すれば良いのでは?
他についても
a.path とかで参照できるはず
ずいぶん遠回りしてるけど、
a=dropbox.Dropbox(トークン).sharing_create_shared_link
として、
a.url
を参照すれば良いのでは?
他についても
a.path とかで参照できるはず
2018/09/01(土) 15:22:01.82ID:5RO4iQNV
すいません、ハマって困っています。
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)
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)
85デフォルトの名無しさん
2018/09/01(土) 15:26:08.43ID:VfnjVYeD BOMついてないか
2018/09/01(土) 15:37:12.61ID:kUpkBQ3x
echo 1 | ruby -e 'STDIN.each { |line| puts(line.to_i + 1) }'
Ruby なら、シェルから、1-liner で、2 と出力される
Python でも同じように、1-liner でやってみれば?
Ruby なら、シェルから、1-liner で、2 と出力される
Python でも同じように、1-liner でやってみれば?
87デフォルトの名無しさん
2018/09/01(土) 15:55:11.65ID:A/mNPeDe >>84
open("sample.txt", encoding="utf-8-sig")
> いくつかの領域では、UTF-8 でエンコードされたファイルの先頭に "BOM" を利用する習慣があります;
中略
> もし、そのようなファイルを読む場合には、この印を自動的にスキップするために 'utf-8-sig' コーデックを利用してください。
https://docs.python.org/ja/3/howto/unicode.html#reading-and-writing-unicode-data
open("sample.txt", encoding="utf-8-sig")
> いくつかの領域では、UTF-8 でエンコードされたファイルの先頭に "BOM" を利用する習慣があります;
中略
> もし、そのようなファイルを読む場合には、この印を自動的にスキップするために 'utf-8-sig' コーデックを利用してください。
https://docs.python.org/ja/3/howto/unicode.html#reading-and-writing-unicode-data
2018/09/01(土) 16:02:39.43ID:kUpkBQ3x
プログラムでは、BOMなしUTF-8 (UTF-8N)を使った方が無難
その代わり、Windows のExplorer ではテキスト検索できなくなるから、
Windows10・WSL・Ubuntu から、grep してる
その代わり、Windows のExplorer ではテキスト検索できなくなるから、
Windows10・WSL・Ubuntu から、grep してる
2018/09/01(土) 16:30:27.70ID:eWdCnGo4
2018/09/01(土) 16:55:46.47ID:5RO4iQNV
91デフォルトの名無しさん
2018/09/01(土) 20:51:46.35ID:5sfxmNQl2018/09/01(土) 23:59:25.43ID:eWdCnGo4
93デフォルトの名無しさん
2018/09/02(日) 05:35:01.36ID:0w6R8dvF Python初心者(プログラミング初心者)です。
スクレイピングをしようとしていたら躓いてしまったので質問をさせてください。
requestsで変数htmlに入れたサイトのhtmlをファイルに保存したいのですが良く分かりませんでした。
file.writeみたいなのも書いてみてるんですがエラー吐かれたりします。誰か例として作ってくれませんか?
requests.getで変数htmlに取得したサイトhtmlをc:/user/hoge/Documents/hymlfile.htmlに追記モードで保存したいです。
無能でごめんなさい助けてください。
スクレイピングをしようとしていたら躓いてしまったので質問をさせてください。
requestsで変数htmlに入れたサイトのhtmlをファイルに保存したいのですが良く分かりませんでした。
file.writeみたいなのも書いてみてるんですがエラー吐かれたりします。誰か例として作ってくれませんか?
requests.getで変数htmlに取得したサイトhtmlをc:/user/hoge/Documents/hymlfile.htmlに追記モードで保存したいです。
無能でごめんなさい助けてください。
2018/09/02(日) 07:13:26.28ID:5WqNet32
File.open(file_path, 'a') { |io| io.write text }
Ruby では、File.open の引数に、
ファイルパスと、ファイルを開く際の、mode を渡す
a なら追記書き込み
「python file write」で検索!
Ruby では、File.open の引数に、
ファイルパスと、ファイルを開く際の、mode を渡す
a なら追記書き込み
「python file write」で検索!
2018/09/02(日) 08:24:22.51ID:GLq4HnWW
import requests
r = requests.get("https://www.python.org")
f = open("c:/user/hoge/Documents/hymlfile.html", "a")
f.write(r.text)
r = requests.get("https://www.python.org")
f = open("c:/user/hoge/Documents/hymlfile.html", "a")
f.write(r.text)
96デフォルトの名無しさん
2018/09/02(日) 09:00:47.26ID:0w6R8dvF97デフォルトの名無しさん
2018/09/02(日) 16:47:00.30ID:RE+xVvI9 f.write(r.text)
UnicodeEncodeError: 'cp932' codec can't encode character '\U0001f5a5' in position 12657: illegal multibyte sequence
スクレイピングしたサイトに絵文字があると(?)このエラーが起こるようです。
エンコーディングの関係だと思うんですけど対処法分かる方いますか?
UnicodeEncodeErrorで調べたら解説しているところが少し見つかったんですが僕には何が言いたいのかさっぱりでした。。。。
UnicodeEncodeError: 'cp932' codec can't encode character '\U0001f5a5' in position 12657: illegal multibyte sequence
スクレイピングしたサイトに絵文字があると(?)このエラーが起こるようです。
エンコーディングの関係だと思うんですけど対処法分かる方いますか?
UnicodeEncodeErrorで調べたら解説しているところが少し見つかったんですが僕には何が言いたいのかさっぱりでした。。。。
98デフォルトの名無しさん
2018/09/02(日) 16:56:55.96ID:RE+xVvI9 f.openの時にencoding='utf-8'渡したら解決しました!!
うれしい!!!ありがとう
うれしい!!!ありがとう
2018/09/02(日) 16:59:32.33ID:5WqNet32
cp932 はやめて、BOMなしUTF-8(UTF-8N)で書き込めば?
それか、エンコード変換できない文字は、
エラーにせずに、? に置き換えるとか
それか、エンコード変換できない文字は、
エラーにせずに、? に置き換えるとか
100デフォルトの名無しさん
2018/09/02(日) 17:49:53.80ID:B4IY8jcq ElementTree、lxml、BeautifulSoupってそれぞれどう違うの?
101デフォルトの名無しさん
2018/09/02(日) 17:51:26.55ID:B4IY8jcq ElementTreeは純正
lxml、BeautifulSoupはサードパーティ
lxmlは高速だけど、動的なサイトに弱い
BeautifulSoupは比較的簡単
って感じ?
lxml、BeautifulSoupはサードパーティ
lxmlは高速だけど、動的なサイトに弱い
BeautifulSoupは比較的簡単
って感じ?
102デフォルトの名無しさん
2018/09/02(日) 19:12:56.97ID:dvfcpVZJ 何が言いたいのか
103デフォルトの名無しさん
2018/09/02(日) 19:26:55.59ID:/VgxTU/I 開けっ放しにするんはいけんよ
104デフォルトの名無しさん
2018/09/02(日) 20:28:17.67ID:NdoNeabl lxml 言う程速さを感じないんだよな
105デフォルトの名無しさん
2018/09/03(月) 01:13:17.00ID:IUTdxFc1 import requests
from lxml import etree
url = http://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="http://example.com/">http://example.com/</a><br />
メッセージフォーム:<a href="http://example.com/mail.html">http://example.com/mail.html</a><br />
<br /></div>
がプリントされます。(投稿できなかったので途中で改行してます)
次に、本文はどうやって取り出すんでしょうか?
from lxml import etree
url = http://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="http://example.com/">http://example.com/</a><br />
メッセージフォーム:<a href="http://example.com/mail.html">http://example.com/mail.html</a><br />
<br /></div>
がプリントされます。(投稿できなかったので途中で改行してます)
次に、本文はどうやって取り出すんでしょうか?
106デフォルトの名無しさん
2018/09/03(月) 01:49:47.20ID:BfF9DJB1 要素の内側のテキストを収集するためには、itertext() を参照してください。例えば "".join(element.itertext()) のようにします。
107デフォルトの名無しさん
2018/09/03(月) 19:12:05.50ID:ttVcJTrG Ruby のNokogiri なら、CSS セレクター・XPath とか
jQuery でも、CSSセレクター
jQuery でも、CSSセレクター
108デフォルトの名無しさん
2018/09/06(木) 00:43:50.19ID:YKdnoVr6 ```python
hstg = info.get('hashtags')
print(hstg)
# hashtag
p_url = info['url']['short']
```
p_urlの行をget()だとどう書けばいいですか
辞書にアクセスした時存在しないキーだとNoneを返したいんでget()を使いたいんですが
hstg = info.get('hashtags')
print(hstg)
# hashtag
p_url = info['url']['short']
```
p_urlの行をget()だとどう書けばいいですか
辞書にアクセスした時存在しないキーだとNoneを返したいんでget()を使いたいんですが
109デフォルトの名無しさん
2018/09/06(木) 01:06:41.32ID:9wgcxN1e ようわからんが
info.get('url', {}).get('short')
とか?
若干無駄があるがこの程度の無駄が気になる神経症はCでも書いとけ
info.get('url', {}).get('short')
とか?
若干無駄があるがこの程度の無駄が気になる神経症はCでも書いとけ
110デフォルトの名無しさん
2018/09/06(木) 02:03:26.11ID:YKdnoVr6111デフォルトの名無しさん
2018/09/06(木) 14:42:12.77ID:tPMc56fx 馬鹿はオウム返しですぐ次の質問するよね
112デフォルトの名無しさん
2018/09/06(木) 15:13:17.47ID:QdhwFBW3 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が入れ替わりません
原因は何でしょうか?
tkinter でファンクションキーを押したら文字列を表示させたいです
def text _desp(event):
label["text"] ="bcdef"
label =tk.Label(root, text ="aaaaa", )
label.bind('<F1>', text_desp)
label.pack
と書いて、表示したウィンドウをアクティブにしてからF1を押してもtextが入れ替わりません
原因は何でしょうか?
113デフォルトの名無しさん
2018/09/06(木) 16:49:56.62ID:ntAiYVJq インタプリタ言語最強
114デフォルトの名無しさん
2018/09/06(木) 17:12:39.45ID:QdhwFBW3115デフォルトの名無しさん
2018/09/06(木) 18:22:16.04ID:t3mpF7WK VSCodeの「ターミナルで選択範囲/行を実行」って機能をよく使うんですけど
作ってる最中のfor文内(1行目がインデントしてるテキスト)をテストしたいときは
インデントを一時的に消して実行するしか無いんですかね?
IPythonなら1行目がインデントしてても実行してくれるけど
あれはターミナルにフォーカスを移してEnterを押さないと実行してくれないのが不満だし
作ってる最中のfor文内(1行目がインデントしてるテキスト)をテストしたいときは
インデントを一時的に消して実行するしか無いんですかね?
IPythonなら1行目がインデントしてても実行してくれるけど
あれはターミナルにフォーカスを移してEnterを押さないと実行してくれないのが不満だし
116デフォルトの名無しさん
2018/09/06(木) 18:56:40.11ID:r2CzgwVn 馬鹿はオウム返しって言うの好きだよね
117デフォルトの名無しさん
2018/09/06(木) 19:24:48.49ID:UI2giREj VSCode の拡張機能のCode Runner を入れたら、
右クリックメニューから、そのまま実行できる
または、選択したコードを実行できる
右クリックメニューから、そのまま実行できる
または、選択したコードを実行できる
118デフォルトの名無しさん
2018/09/06(木) 21:13:55.88ID:fyvsaEga 入門書で学んでるプログラミング初学者です。
数字以外を入力した場合に「不正な値です」と表示させたいのですが計算を間違えた際にも「不正な値です」と出てしまいます。
どこを直したらいいでしょうか?
from random import randint
miss = 0
correct = 0
print("問題?3回間違えたら終了。qで終了")
while miss<3 :
a = randint(1,100)
b = randint(1,100)
ans = a + b
question = f" {a} + {b} は?"
value = input(question)
#qと入力されたら終了
if value == "q":
break
#正解か不正解か判断する
if value == str(ans) :
correct += 1
print("正解です!")
elif type(value) != int :
print("不正な入力です。")
else :
miss += 1
print("間違い!","×" * miss)
print("----終了----")
print("正解 :", correct)
print("間違い:", miss)
数字以外を入力した場合に「不正な値です」と表示させたいのですが計算を間違えた際にも「不正な値です」と出てしまいます。
どこを直したらいいでしょうか?
from random import randint
miss = 0
correct = 0
print("問題?3回間違えたら終了。qで終了")
while miss<3 :
a = randint(1,100)
b = randint(1,100)
ans = a + b
question = f" {a} + {b} は?"
value = input(question)
#qと入力されたら終了
if value == "q":
break
#正解か不正解か判断する
if value == str(ans) :
correct += 1
print("正解です!")
elif type(value) != int :
print("不正な入力です。")
else :
miss += 1
print("間違い!","×" * miss)
print("----終了----")
print("正解 :", correct)
print("間違い:", miss)
119デフォルトの名無しさん
2018/09/06(木) 21:16:02.79ID:r2CzgwVn 当っとるからええやん
120デフォルトの名無しさん
2018/09/06(木) 21:16:08.52ID:fyvsaEga あれ、書き込みにインデントが反映されてない…
121デフォルトの名無しさん
2018/09/06(木) 21:33:42.86ID:rG7JeulO >>120
ソース貼れるサイト
https://pastebin.com/ ペーストビン
https://ja.osdn.net/pastebin/ OSDNコピペ ログインしないで投稿すると一週間で自動削除
>>1
ソース貼れるサイト
https://pastebin.com/ ペーストビン
https://ja.osdn.net/pastebin/ OSDNコピペ ログインしないで投稿すると一週間で自動削除
>>1
122デフォルトの名無しさん
2018/09/06(木) 21:46:28.09ID:r2CzgwVn >>118
真面目に添削すると
数字意外を入力した場合に「不正な値です」と表示する
→数字でないならそもそも値ではないやんか、何言っとんやわれ?なめとんか?
「不正な入力です」と表示する
→不正というワードは否定形なのでわかりにくい
「間違った入力です」と表示する
→何が間違っているのかわからない
「数字以外の入力です」と表示する
→だからどうすれば良いのかわかりにくい
「数字を入力してください」と表示する
→漢数字でもええんか?
「答えになる数値を入力を入力してください」と表示する
→めっちゃわかりやすいやん!
真面目に添削すると
数字意外を入力した場合に「不正な値です」と表示する
→数字でないならそもそも値ではないやんか、何言っとんやわれ?なめとんか?
「不正な入力です」と表示する
→不正というワードは否定形なのでわかりにくい
「間違った入力です」と表示する
→何が間違っているのかわからない
「数字以外の入力です」と表示する
→だからどうすれば良いのかわかりにくい
「数字を入力してください」と表示する
→漢数字でもええんか?
「答えになる数値を入力を入力してください」と表示する
→めっちゃわかりやすいやん!
123デフォルトの名無しさん
2018/09/06(木) 21:56:28.45ID:bpm1lb7O >>118
assert使うといいよ
assert使うといいよ
124デフォルトの名無しさん
2018/09/07(金) 00:32:30.89ID:hV93LKBw125デフォルトの名無しさん
2018/09/07(金) 16:30:33.98ID:DKf48tK4 >>122
イイネ!(・∀・)ワロタヨ!
イイネ!(・∀・)ワロタヨ!
126デフォルトの名無しさん
2018/09/07(金) 17:07:52.42ID:82uhpEUK >>118
valueはstrだから、たとけ入力されたのが"123"とかの数'字'であってもtypeはstrになる
つまり、自分で明示的に型変換をしない限り何を入力してもtype(value)==intが成り立つ事はない
入力を受け取ったらまず最初にvalueをintに型変換したら?
int(value)でできるし、変換できない文字列が入って来たらエラーになるので例外処理で不正な入力も検知できるよ
valueはstrだから、たとけ入力されたのが"123"とかの数'字'であってもtypeはstrになる
つまり、自分で明示的に型変換をしない限り何を入力してもtype(value)==intが成り立つ事はない
入力を受け取ったらまず最初にvalueをintに型変換したら?
int(value)でできるし、変換できない文字列が入って来たらエラーになるので例外処理で不正な入力も検知できるよ
127デフォルトの名無しさん
2018/09/07(金) 17:26:59.78ID:po/zaTpZ たとけ
128デフォルトの名無しさん
2018/09/07(金) 18:10:30.75ID:DKf48tK4 たとけ
129デフォルトの名無しさん
2018/09/07(金) 18:16:00.07ID:QgSvA/nW とたけけ
130デフォルトの名無しさん
2018/09/07(金) 20:30:20.91ID:DKf48tK4 とたけけけ
131デフォルトの名無しさん
2018/09/08(土) 02:42:10.64ID:zJ7GwxeF import dataset
db = dataset.connect('sqlite:///zoo.db')
table = db['zoo']
results = table.find(damages = '大けが')
# for record in results:
# print(record)
if results == None:
print('無いです')
else:
print('ありました')
print(results)
カラムの 『damages』 が 『大けが』 のレコードがあるか無いか知りたいんですが、当たり前だけどこれだとダメでした。どうやってあるかないかを調べたらいいんでしょうか?
db = dataset.connect('sqlite:///zoo.db')
table = db['zoo']
results = table.find(damages = '大けが')
# for record in results:
# print(record)
if results == None:
print('無いです')
else:
print('ありました')
print(results)
カラムの 『damages』 が 『大けが』 のレコードがあるか無いか知りたいんですが、当たり前だけどこれだとダメでした。どうやってあるかないかを調べたらいいんでしょうか?
132デフォルトの名無しさん
2018/09/08(土) 03:07:51.29ID:zJ7GwxeF 自己レスです。
これで出来たっぽいけど他にもっといいやり方ありますか?
import dataset
db = dataset.connect('sqlite:///zoo.db')
table = db['zoo']
results = list(table.find(damages = '大けが'))
# for record in results:
# print(record)
if results == []:
print('無いです')
else:
print('ありました')
print(results)
これで出来たっぽいけど他にもっといいやり方ありますか?
import dataset
db = dataset.connect('sqlite:///zoo.db')
table = db['zoo']
results = list(table.find(damages = '大けが'))
# for record in results:
# print(record)
if results == []:
print('無いです')
else:
print('ありました')
print(results)
133デフォルトの名無しさん
2018/09/08(土) 07:56:53.17ID:aeU58kvm134デフォルトの名無しさん
2018/09/08(土) 08:21:40.63ID:BJl7Ln5g こんにちは。
pycharm という便利なものがあるとのことでさっそく使ってみました。
最新版の"PyCharm Community Edition 2018.2.3"をWindows 10 にインストールし、
プロジェクトの設定の"Existing interpreter"に、普段使用している cygwin64 の "python3.6m.exe"を
指定しました。IDEからRunすると問題なく実行されるのですが、ブレークポイントを設定して
Debugを実行すると、
pydev debugger: warning: trying to add breakpoint to file that does not exist: /cygdrive/c/pycharm_doc/test001/c:/pycharm_doc/test001/main.py (will have no effect)
という、ファイルが存在しないというエラーが出来ます。
cygwinのパスの表現と、windowsのパスの表現が合体した変なパス名が表示されます。
3台のPCで試したのですが、全部同じ結果でした。解決する方法はありますかねぇ。
(こちらの都合でcygwin環境が必須になっています)
pycharm という便利なものがあるとのことでさっそく使ってみました。
最新版の"PyCharm Community Edition 2018.2.3"をWindows 10 にインストールし、
プロジェクトの設定の"Existing interpreter"に、普段使用している cygwin64 の "python3.6m.exe"を
指定しました。IDEからRunすると問題なく実行されるのですが、ブレークポイントを設定して
Debugを実行すると、
pydev debugger: warning: trying to add breakpoint to file that does not exist: /cygdrive/c/pycharm_doc/test001/c:/pycharm_doc/test001/main.py (will have no effect)
という、ファイルが存在しないというエラーが出来ます。
cygwinのパスの表現と、windowsのパスの表現が合体した変なパス名が表示されます。
3台のPCで試したのですが、全部同じ結果でした。解決する方法はありますかねぇ。
(こちらの都合でcygwin環境が必須になっています)
135デフォルトの名無しさん
2018/09/08(土) 08:54:48.94ID:LzkjeqyB >/cygdrive/c/pycharm_doc/test001/c:/pycharm_doc/test001/main.py
Windows10・WSL で、Linux(Ubuntu)側から、Windowsのフォルダへアクセスしたような感じかね?
/mnt/c/Users/Owner/Documents
Ubuntu側から、WindowsのDocumentsフォルダへアクセス
Windows10・WSL で、Linux(Ubuntu)側から、Windowsのフォルダへアクセスしたような感じかね?
/mnt/c/Users/Owner/Documents
Ubuntu側から、WindowsのDocumentsフォルダへアクセス
136デフォルトの名無しさん
2018/09/08(土) 09:21:46.04ID:r9+/L/Cg137デフォルトの名無しさん
2018/09/08(土) 10:40:12.37ID:BJl7Ln5g138デフォルトの名無しさん
2018/09/08(土) 12:03:41.47ID:TO1NWAp1 変数名つける時って何語くらいまででつけますか?
詳しく説明すると長くなるし、短いとかぶるし、省略とか頭文字みたいなのは良くないらしいですが
参考文献とかあったら教えてほしいです。
詳しく説明すると長くなるし、短いとかぶるし、省略とか頭文字みたいなのは良くないらしいですが
参考文献とかあったら教えてほしいです。
139デフォルトの名無しさん
2018/09/08(土) 12:43:49.56ID:cbJtO1ny リーダブルコードでも読んでこい
140デフォルトの名無しさん
2018/09/08(土) 21:24:47.08ID:JF6Ma/9C 標準ライブラリとかメジャーなフレームワークコードのコード読んで好きなの選べばいいじゃん
141デフォルトの名無しさん
2018/09/08(土) 23:13:29.87ID:fPoBP/2C >>138
頭文字で名付けても手にとるように意味がわかるコードが良いコードやね
頭文字で名付けても手にとるように意味がわかるコードが良いコードやね
142デフォルトの名無しさん
2018/09/09(日) 11:20:55.79ID:kzlGF2pO ジェーン台風のJって台風10号だってすぐ判るネーミングやね
143デフォルトの名無しさん
2018/09/09(日) 16:08:53.74ID:pN0oDaL+ rssを表示したいんだけど、行末が『ます。』のものだけを表示することにしてます。もし、1行も『ます。』がなくて表示すべきものが全く無かった場合はforループの後に別の処理をしたいんだけど、やり方教えてほしいです。
for e in entri:
title = e['title']
title = title.split(" - ")[0]
summary = e['summary']
summaryList = summary.split("分")
dateTime = f'{summaryList[0]}分'
chuihou = summaryList[1]
if title[:6] != '[ PR ]':
if summa[-3:] == 'ます。':
print(f'{title} {dateTime}')
print(chuihou)
for e in entri:
title = e['title']
title = title.split(" - ")[0]
summary = e['summary']
summaryList = summary.split("分")
dateTime = f'{summaryList[0]}分'
chuihou = summaryList[1]
if title[:6] != '[ PR ]':
if summa[-3:] == 'ます。':
print(f'{title} {dateTime}')
print(chuihou)
144デフォルトの名無しさん
2018/09/09(日) 16:26:44.95ID:XnExmf42 5chは連続する半角スペースを消してしまうから
インデントが崩れる
(インデント崩さず)ソース貼れるサイト
https://pastebin.com/ ペーストビン
https://ja.osdn.net/pastebin/ OSDNコピペ ログインしないで投稿すると一週間で自動削除
インデントが崩れる
(インデント崩さず)ソース貼れるサイト
https://pastebin.com/ ペーストビン
https://ja.osdn.net/pastebin/ OSDNコピペ ログインしないで投稿すると一週間で自動削除
145デフォルトの名無しさん
2018/09/09(日) 16:33:13.24ID:pN0oDaL+146デフォルトの名無しさん
2018/09/09(日) 17:06:15.73ID:0ym3cmgA counter = false
ループ処理 { 1件でも処理したら、counterをtrue にする }
もし、counterがfalseのままなら{ 処理 }
ループ処理 { 1件でも処理したら、counterをtrue にする }
もし、counterがfalseのままなら{ 処理 }
147デフォルトの名無しさん
2018/09/09(日) 17:17:25.83ID:pN0oDaL+148デフォルトの名無しさん
2018/09/09(日) 23:08:48.04ID:pN0oDaL+ forループの続きなんですが、「to」が「imanoJikan」よりも先の項目が見つかったら直近のひとつだけ取得してループを終了させる方法おしえてほしいです
https://pastebin.com/hUp7pyTB
https://pastebin.com/hUp7pyTB
149デフォルトの名無しさん
2018/09/09(日) 23:26:11.91ID:sFuHefah printの下に同じインデントで
break
break
■ このスレッドは過去ログ倉庫に格納されています
