Pythonのお勉強 Part54 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/09/01(金) 16:44:47.30ID:igIE9hK/
Pythonオフィシャルサイト
http://www.python.org/

テンプレ等は2以降で

■前スレ
Pythonのお勉強 Part53
http://mevius.2ch.net/test/read.cgi/tech/1494683284/
2017/10/06(金) 19:07:09.04ID:YIttGZb9
>>267
ブラウザーで表示ししても普通の日本語だし、
そのページだけがおかしな結果を返すって、どうやって問題判別したらいいですかね?
2017/10/06(金) 21:13:46.60ID:30OgfBeu
解決方法:そのページのURLを貼る
2017/10/06(金) 21:28:39.22ID:tqIbkLAn
TeraPad でも、中国の地名の「深せん」の「せん」は、? になる。
サロゲートペア(4 byte 文字)

他にも、丸で囲んだ数字は、Windows の環境依存文字。
各スマホ会社の絵文字とか

ブラウザでは見れても、各アプリでは対応していない事が多い。
Ruby 以外の各アプリでは、日本人の開発者がいないから
2017/10/06(金) 21:58:40.58ID:BqUhpBOn
chardet使ってがんばるとか
2017/10/06(金) 23:54:24.28ID:k7MGRodg
<?php
 
//ニュースを取得し配列に格納する
$news_array = get_news();
 
//確認する
var_dump($news_array);
 
//最初の挨拶
$say = "最新のニュースをお伝えします。";
exec('/usr/local/bin/jsay '.$say);
 
//ニュース分だけ読み上げる
for($count=0; $count < count($news_array); $count++) {
exec('/usr/local/bin/jsay '.$news_array[$count]);
}
 
//最後の挨拶
$say = "ニュースをお伝えしました。";
exec('/usr/local/bin/jsay '.$say);
 
function get_news() {
//$data = array();
$rss = simplexml_load_file('http://www3.nhk.or.jp/rss/news/cat0.xml');
$array = array();
2017/10/06(金) 23:54:46.02ID:k7MGRodg
 
$i = 0;
foreach ($rss->channel->item as $item) {
// $x = array();
// $x['link'] = (string)$item->link;
// $x['title'] = (string)$item->title;
// $x['description'] = (string)$item->description;
// $x['pubDate'] = (string)$item->pubDate;
// $data[] = $x;
 
if ($i == 0) {
$x = "最初のニュースです。";
}
else {
$x = "次のニュースです。";
}
 
$x .= (string)$item->description;
 
$array[] = $x;
$i++;
}
 
return $array;
}
?>
2017/10/06(金) 23:56:47.82ID:k7MGRodg
PHPで書かれたラズパイ(OPENJTALK)を喋らせるスクリプトです。

.pyに書き換えできた奴が優勝
よろしくお願いしますm(__)m
2017/10/07(土) 00:01:29.80ID:PGbGVahj
はいはい
お薬飲んで寝ましょうね

次の方どうぞ
2017/10/07(土) 01:03:06.79ID:ZEQ3aPdc
俺はできないけど、上のヤツもできない
すまんな
2017/10/07(土) 01:07:42.82ID:5BLCZyWZ
タダで他人にやらせようなんね虫が良すぎるとは思わんかね
2017/10/07(土) 04:37:45.13ID:ZHVQCO5Z
>>265
HTTPヘッダで指定されてるのか
HTMLで指定されてるのか
両方で指定されてるのか

curlとか単純なツールでダウンロードしてみてエンコーディングを調べる
odとかfileとかで
2017/10/07(土) 09:45:58.22ID:T59cRflU
>>274
大丈夫
その程度ならちょっと勉強するだけでできるから頑張れ
2017/10/07(土) 13:28:02.94ID:ZEQ3aPdc
ここまで優勝者不在
2017/10/07(土) 16:35:57.38ID:LZpsREVO
先頭に¥マークがついている文字列の数字をintで数字にしたいんですが、先頭の¥はどうやって外すんでしょうか?
stripやreplace使うと、\xが先頭について16進数になってしまいます。
2017/10/07(土) 16:53:12.39ID:1zSdZ2Jj
>281
全角の円記号なら、
int(s[1:])

バックスラッシュに相当する円記号だと、よく分からん。
2017/10/07(土) 16:55:27.09ID:LZpsREVO
>>282
返信、ありがとうございます。
バックスラッシュに相当する¥記号です。
配列に入れて先頭を消してみます。
2017/10/07(土) 18:38:04.32ID:Tixzubeg
s = "\123456"みたいなこと?
s.replace("\\", "")とかじゃあかんの?
2017/10/07(土) 19:09:23.60ID:yZrHLHp1
>>281
変換したい文字列をそのまま張り付けろや
やってみた操作と結果を言葉だけじゃなくコードで示せや
2017/10/07(土) 22:03:06.13ID:+rsZKcSi
なんでみんな小出しにするんだろうね
入力の文字列やURLを隠したり、関数名をわざわざhogeに直して他人が理解しにくいものにしたり
2017/10/07(土) 22:48:14.80ID:4eta7BAP
pycon jpで発表してる外人率の高さは何なの
なんで日本にきたの
2017/10/08(日) 00:20:15.86ID:X8vdjNfB
>>274
ここはスキル低いのばっかだから短いコードでも書いてもらえないよ、つか書けないんだよ。

参考にどうぞ。頑張って。
http://www.tapun.net/raspi/raspberry-pi-talk-weather
あ、それとRSSフィードの解析にはfeedparserを利用するから
モジュールお忘れなく。
2017/10/08(日) 00:43:20.22ID:UUYMKH1C
>>285

\38,000
が変換したい文字列ですが、
エディターで\が入力できず、バックスラッシュになってしまうために、
s.replace("\\", "")
とは入力できずに、
s.replace("バックスラッシュバックスラッシュ", "")
で試してみましたが駄目でした。
さくらエディタで\でやってもエラーになりました。
linux上でやれば、結果は異なるのかもしれませんが。

windowsでやっているためか、
コード直書きで、\38,000と入力して変換した時と、
プログラムから html getして 変数に入れた場合で
変数の長さが変わったりして変な動きになりましたので、
リストに入れてから\に該当する最初の数桁を削除して対応することにしました。
2017/10/08(日) 01:27:57.97ID:ACvYQg1d
https://ja.m.wikipedia.org/wiki/%E3%83%90%E3%83%83%E3%82%AF%E3%82%B9%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5
2017/10/08(日) 02:52:13.78ID:2gYH4HGu
Windowsのためのraw文字列
2017/10/08(日) 08:40:50.91ID:Eg4i3QFB
バックスラッシュで置換できなかったってことは、U+005CじゃなくてU+00A5だったとか。
2017/10/08(日) 10:01:04.68ID:zWNWnJsd
>>289
\は特殊な記号で、\nは改行を意味するし、\bはバックスペースなの
これらはエスケープシーケンスっていうの

¥という文字を使いたい場合は\\とするの、もしくはraw文字列を使って入力するの
だから'\38,00'と直書きした場合は'\3'というエスケープシーケンス+ '8,00'ってことになるの
正しくは'\\38,00'とするかraw文字のr'\38,00'としないといけないの

html getで取得した文字は正しい文字列の'\\38,00'なの

>>> s='\38,00'
>>> s
'\x038,00'
>>> print(s)
8,00 ←ウンコ
>>>
>>> s='\\38,00'
>>> s
'\\38,00'
>>> print(s)
\38,00 ←正しく表示される
>>>
2017/10/08(日) 10:23:11.06ID:zWNWnJsd
ああ、あと>>290-291に言っときんだけど
オマエラさぁー、回答に関連ありそうなURLやキーワード張り付けて教えた気になってんじゃねーぞ
2017/10/08(日) 10:27:46.30ID:ACvYQg1d
すまん
ジョークは文化水準がある程度高くないと通じないということを忘れていた
2017/10/08(日) 11:28:38.21ID:FGX6bPrh
html getでもきっとうまく行かなかったんでしょ?
>>293は不十分で、>>290>>292が正解なんじゃないの?
2017/10/08(日) 11:56:38.40ID:UUYMKH1C
>>293
>だから'\38,00'と直書きした場合は'\3'というエスケープシーケンス+ '8,00'ってことになるの
ローカル環境でのテストの仕方間違ってましたね。文字の長さが変わる理由もこれでしょうね。


>'\\38,00'
>>> print(s)
>\38,00 ←正しく表示される
この最初の\を外してintにしたいから、(price.replace('\\', '')とかで外そうとしたけど駄目で、
今は配列に入れて強制的に頭からの数桁を削除して対応してます。
2017/10/08(日) 13:24:24.77ID:zWNWnJsd
>>> import re
>>> price='¥38,00(税込)' #全角の\
>>> int(re.sub(r'\D', '', price))
3800
>>>
>>> price='\\38,00(税抜)' #半角の\
>>> int(re.sub(r'\D', '', price))
3800
>>>

¥以外も削除する完璧な回答です、どうぞ
2017/10/08(日) 13:34:18.46ID:X8vdjNfB
295を本気にさせてしまったな
2017/10/08(日) 13:56:47.36ID:HosRocIl
とりあえず
円マークとバックスラッシュの話なのか
バックスラッシュのエスケープの話なのか
を切り分けてから議論しようよ...
2017/10/08(日) 14:04:24.51ID:zWNWnJsd
Pythonに直書きしてたのがバックスラッシュで
html getしてたのが円マーク
そして完璧な回答が>>298
分かったかな?
2017/10/08(日) 14:34:45.83ID:Fff+sH1Q
¥100 (内税8%)
先生うまく行きません!
2017/10/08(日) 14:41:16.77ID:X8vdjNfB
バカが多すぎ
2017/10/08(日) 15:03:14.57ID:Y61Wi2fA
自分はバカでないと言う根拠のない前提
2017/10/08(日) 17:18:33.82ID:eYQqUoDy
俺も馬鹿だけどお前らも馬鹿だな
2017/10/08(日) 18:02:09.80ID:X8vdjNfB
高卒がキレ気味でワロタw
2017/10/08(日) 18:30:31.32ID:CMWw5eHR
ブーメラン乙
2017/10/08(日) 19:00:51.46ID:UUYMKH1C
>>298
そのsubtractのメソッドでうまくいきました。
ありがとうございま\D


\D 任意の非 Unicode 10 進数文字にマッチします。した。
なんかすごいためになる情報でした。
2017/10/08(日) 19:02:36.03ID:UUYMKH1C
>>298
そのsubtractのメソッドでうまくいきました。
ありがとうございました。


'\D 任意の非 Unicode 10 進数文字にマッチします。'
なんかすごくためになる情報ですね。
2017/10/09(月) 00:49:09.60ID:XAANZ+GT
ブーメランも糞あるかよw
大学ぐらい普通に出とるわ

知障(高卒)と一緒にすんなっつーの(笑)
2017/10/09(月) 06:17:34.81ID:UEIAYP2F
いきなり高卒とか言い出す奴はF欄
2017/10/09(月) 11:59:41.58ID:mQYmdfeJ
機種依存文字の ?が削除できないんですが、
aaa.strip('?')じゃ駄目なんですかね?
他の文字だと問題ないんですけどね。
2017/10/09(月) 12:22:39.06ID:+Yk871Qd
MIT卒の俺から見ればみんな低学歴だわ
低学歴同士仲良くしろよ
314デフォルトの名無しさん
垢版 |
2017/10/09(月) 12:33:51.46ID:nnOwdodd
NEET卒のくせにw
2017/10/09(月) 12:39:45.83ID:e9tl0NhN
PyCon 12年連続1位の俺からしたらみんなスパゲッティコードだわ
2017/10/09(月) 12:58:02.95ID:NAQzkiiY
書き込めない・・・テスト
317デフォルトの名無しさん
垢版 |
2017/10/09(月) 13:22:07.49ID:7RuyVWXL
>>314
NEETから卒業してるなら、それはそれで偉くね?
2017/10/09(月) 13:24:51.77ID:K5KMjKcZ
俺はNEETに残って研究を続けるぞ〜
2017/10/09(月) 13:25:26.76ID:NAQzkiiY
>>312
機種依存文字の?と、直書きの?は見た目は同じでも文字コード値が違う
?に見えるからって直書きで?で指定しても全く無意味

まず問題の機種依存文字を調べる、ここでは仮にその機種依存文字を'謎'とする
>>> aaa = 'hoge謎'
>>>
>>> for i in aaa: print(ord(i))

104
111
103
101
35598
>>>

ord関数で文字の文字コード値が分かる、'謎'の文字コード値は35598
文字コード値を文字に変換するのはchr関数だから
>>> aaa.strip(chr(35598))
'hoge'
>>>
2017/10/09(月) 13:26:50.17ID:NAQzkiiY
括弧を全角の(にしたら書き込めたわ
連続した括弧がアカンのか? よく分からんわ
321デフォルトの名無しさん
垢版 |
2017/10/09(月) 22:51:02.72ID:XxdTmD6P
(i) <てst
322デフォルトの名無しさん
垢版 |
2017/10/09(月) 23:02:08.22ID:0FScRfWB
お、おめこや
2017/10/10(火) 08:37:30.54ID:aulArmiW
for i in aaa: print(ord(i))

テスト
2017/10/10(火) 08:38:23.36ID:aulArmiW
chr(35598)
テスト
2017/10/10(火) 08:41:16.81ID:aulArmiW
分かった!
(chr(35598))
この括弧を半角にすると書き込めない
2017/10/10(火) 12:50:24.44ID:+q2Bmvm8
>>325
乙。でもどういうことかわかんないよ!
全体を半角カッコで囲んだらアウトってこと?
2017/10/10(火) 13:00:08.55ID:aulArmiW
>>323はOKだから、入れ子の括弧の中に数字があるとダメじゃないのかな?
((33))
テスト
2017/10/10(火) 13:06:27.20ID:aulArmiW
あれれ? 書き込めたわ・・・
chr付けた書き込めなかった→ (chr(33))
chrの外の括弧を外しても書き込めなかった→ chr(33)
chr関数の引数が無い場合も書き込めなかった→ chr()

まとめ
chr関数を書くとダメみたいだね
2017/10/10(火) 15:14:21.45ID:SGJO8ou1
>>319
なるほどですね。
何がくっついているのかは、時と場合によるのですが、
機種依存文字だけを取り除く方法ってありますかね?
文字コードが5桁だと機種依存文字って判断したら駄目かな
2017/10/10(火) 15:38:38.15ID:aulArmiW
駄目に決まってんじゃん
機種依存文字の一覧はググれば出てくるよ
2017/10/11(水) 01:10:30.04ID:TZemWZV4
“なるほどです”ってすごいバカっぽいな
2017/10/11(水) 22:08:46.20ID:nNRWIZy5
python初心者なのですが、

class test:
def testfunc(self, y):
self.x = y
x = y

このself.xとxの変数はスコープ以外に何か違ったりしますか?
2017/10/11(水) 22:12:03.79ID:nNRWIZy5
スペース消えた……
どっちの変数もインテンド2つ分です
2017/10/11(水) 22:13:33.07ID:YFL/9Ydt
(U)とか(i)ってイヤらしく感じる
2017/10/11(水) 22:13:39.98ID:nNRWIZy5
すいません変なタイプミス・・・インデントです
2017/10/11(水) 22:16:15.81ID:iHsyneUf
とても強い意図であることは分かった。
2つの変数は別物だよ。
337デフォルトの名無しさん
垢版 |
2017/10/11(水) 22:18:27.93ID:/s7Nkk2O
>>334
とても強いエロを感じる
338デフォルトの名無しさん
垢版 |
2017/10/11(水) 23:25:24.73ID:Zzyc4gmK
>>331
意義あり!
2017/10/11(水) 23:32:55.64ID:lP/CDQFD
なるほどだす
2017/10/12(木) 13:21:38.97ID:uZnuZ+2W
>>332
globalつけるともっと違う
2017/10/12(木) 14:21:23.46ID:OJ6WwI1s
だめだす
2017/10/13(金) 09:45:02.60ID:BWoTjir1
チラシの裏

windows で tensorflow が 3.6にも対応していたので、3.6.3を入れてみた。
いきなり pip install tensorflow したら、必要なものぜんぶとってきてくれてノーエラーノーウォーニングであっさり入った。
すげー!

ついでに pip install mod_wsgi してみた。
mod_wsgi-express.exe ???
何だそれ?
mod_wsgi-express module-config
で出てきた3行をhttpd.confにコピーしてみた。
エラー。
pipしたのは、まだ、tensorflowとmod_wsgiだけだからな。
アプリで使ってるパッケージをpipしてみた。
どれも難なくというかパーフェクトにサクサク入る。
で、これまたあっさり最新のmod_wsgiでアプリが動いたwww
makeファイルを修正してmod_wsgi.soを作る手間が要らなくなった。

なんかもうwindowsでいいって気分。gpu c++ 関係は割とwindowsの人が多いし。
343デフォルトの名無しさん
垢版 |
2017/10/13(金) 10:40:59.06ID:pR0qV+RO
test
344デフォルトの名無しさん
垢版 |
2017/10/13(金) 11:25:21.67ID:Hu5pWW8/
>>342
まぁでも、mod_wsgi作ってる人がWindows上で直に使わ無い方がいいって言ってるんですけどね
せめて、dockerコンテナ内のLinux使えと。
2017/10/13(金) 16:25:01.24ID:ScslFrOK
そんなことで喜ぶとかwindowsは大変だな
2017/10/14(土) 14:04:05.31ID:TG6KQnkb
>>342
ruby経験者がpythonに来ると夢の世界が待っております
2017/10/14(土) 14:33:13.91ID:nAGT83AF
いいか、
Perlは、この世界で一倍いい言語だ!
いちばん優れた軽量プログラミング言語なんだ!!

おれには
Perlしかないんだ!
だから、これがいちばんいいんだ!!
2017/10/14(土) 22:51:00.77ID:eFSrzMsO
http://abc075.contest.atcoder.jp/submissions/1685237

このソースコードなのですが、
[0] * H や
[[0] * (W+2) for i in range(H+2)]
は何をやってるんですか?
2017/10/14(土) 23:20:05.16ID:ZjGmTFeR
>348
[0]*Hは、要素数H個で、値が全て0のリストを作っている。

下のは、二次元配列に相当する入れ子のリストを作っている。
一つ目の添字は0からH+1までのH+2個分で、
二つ目の添字は0からW+1までのW+2個分

c[h][w] で、h行w列目のデータにアクセス出来る。
2017/10/16(月) 23:41:10.10ID:pw2zTQ02
pyenvの初期化にはbashとかで
eval "$(pyenv init -)"
とせよとあり、この'-'はUNIXの慣例に照らせば標準出力を表すファイル名としての'-'だと思うのですが
 pyenv init test.txt
とやってもtest.txtができない…
2017/10/17(火) 00:43:46.52ID:uuhhfaBw
>>349
遅くなったけどありがとうございます
2017/10/17(火) 09:03:22.03ID:0wzwgGfF
>>350
ソース3行くらい読むと分かるよ
https://github.com/pyenv/pyenv/blob/master/libexec/pyenv-init

ファイルに落としたいならこうかな?
$ pyenv init - > test.txt
2017/10/17(火) 20:15:20.79ID:fO6Q7s1J
>>352
レスdクス、
なんじゃそりゃあああああああああ!

ちなファイルに落とすのはこうやればできていた
$ echo "$(pyenv init -)" > test.txt
ので実はさほど困ってはいなかったが「-」がわけわかんなくてスゲー悩んでた;
354デフォルトの名無しさん
垢版 |
2017/10/20(金) 15:55:38.53ID:sAkkqhU+
ばかちん
2017/10/20(金) 22:03:10.75ID:QqXEyXEA
先月からpython始めた初心者です。
yahooファイナンスにアクセスして、ポートフォリオに登録してある株の現在値一覧を取得するプログラムを書いたんだけど、毎回ログインが必要で結構時間が掛かります。(seleniumのwebdriver使ってheadlessモード)
これって、cookieとか使うとログイン維持できて毎回ログインしなくて済むようになるんすか?
2017/10/20(金) 23:00:07.32ID:h7aVEIq7
サイトのHTML を解析すれば、ログインも自動化できる

ユーザー名・パスワードを入力して、フォーム送信ボタンを押す
2017/10/21(土) 00:28:34.36ID:ZBCKl1CT
>>356
レスさんくすです。ログイン自動化はできてますが、(yahooなんで) login-nameとpasswordの2段階で、その間にちょっとwait入れたりして、結構時間かかるんですよね。まぁ回線が遅いのが一番の原因だけど。で、毎回ログインしなくてもいけるようにできないのかなと、
2017/10/21(土) 02:10:05.41ID:L87nxTYD
Pythonなら大丈夫
2017/10/22(日) 02:52:19.07ID:MLpq6jOs
ubuntuの設定で一日使ったわ
全くの素人だから2と3の設定とか共存ワケワカラン
2017/10/22(日) 08:14:32.64ID:8vyNBiTj
そう、pythonならね。
2017/10/22(日) 11:47:29.26ID:4xyHmATU
付属のspyderすらよく分からないガチな初心者なんやけど、BASICの感覚で覚えられると思ってたら何から何までチンプンカンプンで初心者でも分かりやすいサイトか入門書あれば教えてちょんまげ
最終的にはゲーム作りたい
2017/10/22(日) 12:12:35.80ID:3Fv7GeHN
ゲームやるならc++かc#やれよ
2017/10/22(日) 13:23:16.24ID:gIHMMZHA
AI搭載型卓上ゲームならpythonでええぞ
364名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 19:53:28.01ID:TNgDAF9+
リアルタイムでmatplotlibのグラフを更新して、その様子を見ながらグラフに使われているパラメータを変更したいです
リアルタイムアニメーションまでは出来ました
アニメーション中にguiでのパラメーター入力を付けるというのは方向性としては良いアプローチでしょうか?

tkinter等でグラフ表示等も一から作る方が普通ですかね?
365デフォルトの名無しさん
垢版 |
2017/10/22(日) 23:35:20.53ID:T5g6OFOX
おすすめの入門書教えてクレメンス
2017/10/22(日) 23:54:00.65ID:gIHMMZHA
最初は本見ても捗らんしtubeの講義聴きながら模倣するのが良いよ
ちょい古いけど下のハゲの説明は凄いわかりやすい
細かい言語仕様なんてのは使ってから覚えれば良いんよ

http://www.youtube.com/watch?v=A9tv7WBIwyM
2017/10/23(月) 00:06:18.31ID:Bxzo9A+x
>>364
アニメーションてのが何するつもりなのかよくわからないけど、、、、
matplotlibで描いたグラフはFigureCanvasWxAggを使ってwxのUIに乗せられるよ
やったことないけどtkinterでも何かしら方法があるんじゃないのかな?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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