Pythonのお勉強 Part50
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2014/10/17(金) 00:41:32.40ID:Db3yDsQbhttp://www.python.org/
日本Pythonユーザ会 (※英語わかる人は上記のオフィシャルの方を見ることをお薦めします)
http://www.python.jp/
まとめWiki
http://python.rdy.jp/
関連スレ
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
Pythonのお勉強 Part49
http://peace.2ch.net/test/read.cgi/tech/1387528488/
日本語の扱いで戸惑ったらこちらをどうぞ(バッドノウハウ集で笑える)
ttp://speirs.blog17.fc2.com/blog-entry-4.html
ttp://atomic.jpn.ph/prog/etc/encode.html
ttp://d.hatena.ne.jp/kakurasan/20100330/p1
ttp://pc11.2ch.net/test/read.cgi/tech/1217836194/339
339 :デフォルトの名無しさん:2008/08/23(土) 08:36:00
PythonのUnicodeEncodeErrorを知る
ttp://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
よくまとまってた。あとで読む
0228デフォルトの名無しさん
2014/12/10(水) 08:33:52.77ID:KOm0EyPs意味不明なのはいいけど、頑なに BOM を目の敵にするのはやめてくれ
流通しちゃってるんだから、書けなくていいから読み取りは対応しろよ...
0229デフォルトの名無しさん
2014/12/10(水) 08:52:47.05ID:OLff/u5a有象無象の雑魚なら発狂しとけ
0230デフォルトの名無しさん
2014/12/10(水) 09:16:51.66ID:/qu2VRYBPython2なら同じ考え方でいいんだね
Python3だとどうなるのかな
書き方が違うだけで同じことはできるみたいだけど
文字コードにある程度ルーズでもなんとかなる、よりも
多少面倒でもこれさえしとけばOK、ていう原則がはっきりしてるほうが
書く方は楽だと思うんだけど…でも3のほうが文字コードの扱いについては進歩してるんだよね?
#coding: utf8
ustr = open(encoding="cp932").read()
print(ustr.encode("cp932"))
0231デフォルトの名無しさん
2014/12/10(水) 09:59:22.81ID:kUP0yqqm>208 のは
前半はそれで合ってるが最後の一文で台無しだな
SJISで出力すると内部コードの中にSJISに変換できない文字列が含まれてると死ぬ
UTF-8なら少なくともその問題はない
0232デフォルトの名無しさん
2014/12/10(水) 10:06:29.84ID:kUP0yqqmBOM付UTF-8がイミフなのは同意だが
MSが推奨してるっぽいな
メモ帳とかVisualStudioとか
もうMSを見捨てる時期に来てる
0233デフォルトの名無しさん
2014/12/10(水) 10:09:51.61ID:kUP0yqqmprintの中でencodeは好ましくないと思う
せめて
print(ustr)
か
sys.stdout.write(ustr.encode("cp932"))
のどちらかだけ(両方でも良いけどこの2つのどちらかって意味)を使うべき
0234デフォルトの名無しさん
2014/12/10(水) 12:34:20.48ID:KOm0EyPs> 前半はそれで合ってるが
ここにも老害かよ
早く引退しろよ
0235デフォルトの名無しさん
2014/12/10(水) 16:41:38.28ID:aygPX+UOエンコード相違の問題の発生しようがない
0236デフォルトの名無しさん
2014/12/10(水) 17:29:42.68ID:OLff/u5a生きてる価値なし
0237デフォルトの名無しさん
2014/12/11(木) 01:28:31.04ID:Q85UFlEhbstr = ustr.encode("cp932")
print(bstr)
ならいいですか?
0238デフォルトの名無しさん
2014/12/11(木) 05:24:02.53ID:f28H8ZNoだめ
0239デフォルトの名無しさん
2014/12/11(木) 05:48:35.51ID:CWkc829Wここの人たち、レスがごくわずかなうえに不親切だよな
0240デフォルトの名無しさん
2014/12/11(木) 07:07:17.75ID:WfGYiqMSpython3のprintはbytesをそのまま出力しないなんて実行すりゃ一発でわかるだろ
0241デフォルトの名無しさん
2014/12/11(木) 07:12:44.33ID:x9iRcYd3立っている奴は親でも使えって言うでしょ
あんた親ですらないし
生きている限りは俺の役に立てよ
分かったか?スットボケ野郎
0242デフォルトの名無しさん
2014/12/11(木) 07:27:33.17ID:KO4xnUY2乗り換えて2年だが、日本語エンコ
ード関連のエラーが全体の6割程度
という感じ。ただ、perlに比べて
pythonは圧倒的に分かりやすいの
で、そのエラーも直ぐに解決できる。
0243デフォルトの名無しさん
2014/12/11(木) 07:31:45.14ID:0qa2R5YZ0244デフォルトの名無しさん
2014/12/11(木) 07:49:25.24ID:5CTFfTWk0245デフォルトの名無しさん
2014/12/11(木) 07:52:45.08ID:2LyM0kV6http://stackoverflow.com/questions/3654830/why-are-there-no-and-operators-in-python
0246デフォルトの名無しさん
2014/12/11(木) 07:57:54.58ID:2LyM0kV6完全にオリジナルの理由については古いメーリングリストを参照するか、グイドに聞いてください
我々は国語の先生じゃありませんから、作者の心情など知りません
0247デフォルトの名無しさん
2014/12/11(木) 08:30:20.10ID:qKHRQsDrRubyも同じこと言ってた
0248デフォルトの名無しさん
2014/12/11(木) 09:55:41.16ID:CWkc829W試してみたけどちゃんとバイト列を出力するよ
>>> print('感動巨編'.encode('utf-8'))
b'\xe6\x84\x9f\xe5\x8b\x95\xe5\xb7\xa8\xe7\xb7\xa8'
0249デフォルトの名無しさん
2014/12/11(木) 10:27:19.77ID:HAPX7Bnj> =+1と変わらないし
バグ作り込んでるんじゃねーよ w
0250デフォルトの名無しさん
2014/12/11(木) 14:45:55.70ID:qKHRQsDrそれがどうかしましたか?
0251デフォルトの名無しさん
2014/12/11(木) 15:16:27.95ID:9Ff5guLW0252デフォルトの名無しさん
2014/12/11(木) 18:00:18.64ID:CWkc829W>>240で、「bytesをそのまま出力しない」って書いてあるんだけど
そのまま出力してるように見える
0253デフォルトの名無しさん
2014/12/11(木) 19:13:40.76ID:DBF5lZP2__str__を呼んだ結果が出力されてる
おちょくってんならさっさとそう言って
0254デフォルトの名無しさん
2014/12/11(木) 19:39:58.38ID:CWkc829W>>240の真意が>>253であるのなら、
それは俺の疑問である>>239に対する答えになっているのか?
0255デフォルトの名無しさん
2014/12/12(金) 00:48:08.07ID:8W36gylo改める様子もないし気分を害したので無視する
0256デフォルトの名無しさん
2014/12/12(金) 00:53:13.73ID:uo6Dvt+B1だけ足す、みたいな処理が必要になったら、それは大抵使いこなせていない
0257デフォルトの名無しさん
2014/12/12(金) 01:55:03.95ID:3e96854mPerlにおいていろんな本やサイトの記述を読んでも
文字コードエラーがなくならず嫌になりかけていたところ、
>>204の三原則にそって考えるようにしたら
文字コードエラーがぴたっと止まったという経験がありました。
ですが無意識には、Python2と3では文字コードの扱いは変わったはず、
だとすればこの両者で同じ原則が通用するのかしないのか、
通用するのなら文字コードの扱いが変わった意味は…
といったもやっとした問題意識があったようです。
Python2については同じ考え方でよいという返事をいただきました。
Python3については考え方については特に返事はいただいてないですが、
printでencodeはしてはいけないという指摘があり、どうやら
Python3では>>204の三原則をそのまま適用というわけにはいかないようだとわかりました。
日本語の扱いが楽になったといわれているPython3で、身に付いた考えが
使えないのは私にとってはジレンマなのですが…
教えていただいたことを手がかりにもう少しPythonの文字コードについては
勉強を続けていきたいと思います。
質問に答えていただいたみなさん、ありがとうございました。
0258デフォルトの名無しさん
2014/12/12(金) 04:06:58.15ID:iNQHvDR7>Python3では>>204の三原則をそのまま適用というわけにはいかないようだとわかりました。
なんでそうなる
0259デフォルトの名無しさん
2014/12/12(金) 04:11:07.43ID:oPazbw0k自分の妄想で思い込んだ勝手な結論で
さらに勝手な論理を展開する
そして新たにめちゃくちゃな結論を捏造するよな
朝日新聞の読み過ぎ
0260デフォルトの名無しさん
2014/12/12(金) 05:13:35.78ID:QvMAJ2oVその三原則のモデルが素朴に適用されてるのはPython2だから
そっちで慣れてから必要になれば3に移行するのでもいいのでは
Python3の入出力については下のopen()とprint()をよく読んで
https://docs.python.org/3/library/functions.html
0261デフォルトの名無しさん
2014/12/12(金) 06:48:06.42ID:3e96854mPerlでは出力するときは常にencodeしてそれで全く問題ありませんでしたので、
それがそのまま適用できないという意味ではそうなります。
>>260
ありがとうございます。よく読んでみます。
0262デフォルトの名無しさん
2014/12/12(金) 07:51:36.39ID:B5AH1Q7Iprint() は python 側が encode してくれるから
人間が encode したものを渡すのは間違い
0263デフォルトの名無しさん
2014/12/12(金) 11:19:16.99ID:g9fDWS73>print() は python 側が encode
文字列の処理を行う場合に、最終的にはwrite()
でファイルを出力する場合が多いが、途中、デ
バッグ作業でprint()でターミナルに文字列を出
すことがある。print()で問題がないことを確認
した後に、そのままwrite()で出力することが多い
ため、write()でトラブルがないようにprint()の
段階で、事前に「人間が encode した」状態に
して作業をしてきた。もっと効率的な方法はあ
るか?!
0264デフォルトの名無しさん
2014/12/12(金) 11:44:36.73ID:r3Fvlg1D0265デフォルトの名無しさん
2014/12/12(金) 11:46:13.65ID:r3Fvlg1D0266デフォルトの名無しさん
2014/12/12(金) 13:35:52.67ID:/6/jYkZ/ちなみにprint()でfile objectにも出力できる
>>> with open("hello.txt", "w") as f:
print("ハロー", "ワールド", "!", sep="\n", end="", file=f)
>>> with open("hello.txt", "r") as f:
print(f.read())
ハロー
ワールド
!
0267デフォルトの名無しさん
2014/12/12(金) 15:06:48.59ID:r95yk9KL揚げ足取りだけどencoding設定しよう
0268デフォルトの名無しさん
2014/12/12(金) 15:39:20.54ID:MD5XKyoC0269デフォルトの名無しさん
2014/12/12(金) 16:08:24.74ID:z5EZhpJA0270デフォルトの名無しさん
2014/12/12(金) 22:08:55.47ID:uo6Dvt+B0271デフォルトの名無しさん
2014/12/12(金) 22:19:34.78ID:i8Urq36Nまあ慣習として勧めてたら同じか(PEPにあるか知らん
0272デフォルトの名無しさん
2014/12/12(金) 22:20:26.39ID:3t2YpvoZそれはpythonが処理する前に、他のプリプロセッサのようなものが処理してるという解釈。
ちなみにemacsのマジック由来でエディタに対して通知してたものだと思うよ。
0273デフォルトの名無しさん
2014/12/12(金) 22:26:56.75ID:5nLXdALuまあ正直それには同意
0274デフォルトの名無しさん
2014/12/13(土) 00:55:53.58ID:jkMbohzH0275デフォルトの名無しさん
2014/12/13(土) 01:01:46.03ID:Z72ySSz80276デフォルトの名無しさん
2014/12/13(土) 01:36:35.32ID:tCqYQepa0277デフォルトの名無しさん
2014/12/13(土) 10:46:07.59ID:aIxuvf1Sそんな本は同人誌でやってろ
0278デフォルトの名無しさん
2014/12/13(土) 11:08:41.01ID:tCqYQepa0279名無しさん@そうだ選挙に行こう
2014/12/13(土) 13:08:32.74ID:uZi1Q6Mf0280名無しさん@そうだ選挙に行こう
2014/12/13(土) 18:06:39.21ID:/wm7pCNPBasicの同人誌ならだしたことある
今年はPythonにトライしてみようかな
0281名無しさん@そうだ選挙に行こう
2014/12/13(土) 19:33:03.98ID:Z72ySSz80282名無しさん@そうだ選挙に行こう
2014/12/13(土) 19:39:40.80ID:aIxuvf1S0283名無しさん@そうだ選挙に行こう
2014/12/13(土) 19:42:33.29ID:ARfjxQ510284名無しさん@そうだ選挙に行こう
2014/12/13(土) 19:55:41.98ID:HZ+/U4bo0285名無しさん@そうだ選挙に行こう
2014/12/13(土) 20:03:03.27ID:vCqw8O2H同人の世界は凄いな!
マジでなんでもあるのか
0286名無しさん@そうだ選挙に行こう
2014/12/13(土) 20:18:18.48ID:ARfjxQ51スマホ(SL4A)とか入れていけば割と記事埋まりそうだな
広告スポンサーはgoogle
0287デフォルトの名無しさん
2014/12/14(日) 00:52:30.08ID:XK30j/LFゴミを増やさないで
0288名無しさん@そうだ選挙に行こう
2014/12/14(日) 09:20:21.29ID:AdYRt8Z2ごみはゴミ箱がお似合いだよなあ
こことか
0289名無しさん@そうだ選挙に行こう
2014/12/14(日) 09:29:34.09ID:Pi6Ddeoe若い子には元ネタわからなくて単なる下ネタにしか見えないだろ!いい加減にしろ
0290名無しさん@そうだ選挙に行こう
2014/12/14(日) 10:23:28.82ID:pGWjlZN40291名無しさん@そうだ選挙に行こう
2014/12/14(日) 13:00:26.44ID:+40pBggvって書こうとして一応辞書引いたらもろその意味もあったw
{名-2} : 〈俗〉ペニス
0292名無しさん@そうだ選挙に行こう
2014/12/14(日) 14:19:52.12ID:AdYRt8Z20293デフォルトの名無しさん
2014/12/14(日) 20:27:20.41ID:KLPc62jAオランダでは、安楽死、大麻、
同性愛、なんでもOK!
0294デフォルトの名無しさん
2014/12/14(日) 21:44:31.52ID:dlfhVKfg0295デフォルトの名無しさん
2014/12/14(日) 21:45:12.96ID:dlfhVKfg0296デフォルトの名無しさん
2014/12/14(日) 23:13:02.91ID:QEpJ0bQG順番にほぼ全部の歯を削られ治療されたことを思い出した
当時は気付かなかったけど今思えば騙されてたんだな
0297デフォルトの名無しさん
2014/12/14(日) 23:50:36.13ID:sUODOxSW0298デフォルトの名無しさん
2014/12/15(月) 00:39:37.17ID:DDIABndf0299223
2014/12/16(火) 20:47:29.80ID:pFHdmYpT色々試行錯誤しながらだったのでお返事が遅れました。
通信はTCP/IPで、標準のsocketモジュールで
send/recvしたらデータを受信できました。
0300デフォルトの名無しさん
2015/01/03(土) 03:10:34.17ID:429xmepm0301デフォルトの名無しさん
2015/01/03(土) 13:48:18.77ID:TeAjaTLz0302デフォルトの名無しさん
2015/01/03(土) 13:51:42.38ID:duDbuP4G0303デフォルトの名無しさん
2015/01/09(金) 17:30:42.98ID:JoT/J+XX0304デフォルトの名無しさん
2015/01/09(金) 18:00:30.11ID:ERxK07PYplatformモジュール
0305デフォルトの名無しさん
2015/01/10(土) 08:11:14.98ID:z+ZhWeMzパッと開いたenumerateの解説で、start値のデフォルトが1と書いてあるから
何だこれはと公式サイトを見に行ったら、コードを含む約50の誤りが出てる
3千円以上出してこんな信頼できない技術本を買わされた怒りがこみ上げてくる
著者を見て納得、専門ライターではなく、単なるPythonユーザーのようだった
天下のオライリージャパンも墜ちたものだ
0306デフォルトの名無しさん
2015/01/10(土) 08:49:38.90ID:8jyfhdtqplatform.release() で
> '2.2.0' や 'NT' のような、システムのリリース情報を返します。
って書いてあるけど間違ってるよね
0307デフォルトの名無しさん
2015/01/10(土) 08:50:19.81ID:8jyfhdtq> 'Linux', 'Windows', 'Java' のような、システム/OS 名を返します。不明な場合は空文字列を返します。
これも可笑しい
0308デフォルトの名無しさん
2015/01/10(土) 09:19:51.19ID:s2E25yiA>>307
どうだったら正しいと思うの?
0309デフォルトの名無しさん
2015/01/10(土) 09:35:49.66ID:8jyfhdtq'Microsoft'
>>> platform.release()
'Windows'
説明と全然違うし
0310デフォルトの名無しさん
2015/01/10(土) 09:37:23.66ID:8jyfhdtq誤解の無いように付け加えておくと
>>309 になって欲しいって意味じゃなくて
結果がそうなってるのが変ってことです
0311デフォルトの名無しさん
2015/01/10(土) 09:56:57.62ID:s2E25yiAそれはMSお得意のワザと取らせないようにするやつじゃなくて?
0312デフォルトの名無しさん
2015/01/10(土) 10:04:56.48ID:8jyfhdtq善意か悪意かは知る由もありませんが
結果的に嫌がらせになってる例のひとつですね
0313デフォルトの名無しさん
2015/01/10(土) 10:07:30.45ID:8jyfhdtq'nt'
これでいけました
本当にありがとうございました
0314デフォルトの名無しさん
2015/01/10(土) 10:18:59.02ID:ruNBWZhb>>> platform.system()
'Linux'
>>> platform.release()
'3.2.0-4-amd64'
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
>>> platform.system()
'Darwin'
>>> platform.release()
'14.0.0'
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
>>> platform.system()
'Windows'
>>> platform.release()
'7'
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 6 2014, 22:15:05) [MSC v.1600 32 bit (Intel)] on win32
>>> platform.system()
'Windows'
>>> platform.release()
'7'
うちの環境じゃ全然おかしくないけどな
0315デフォルトの名無しさん
2015/01/10(土) 10:32:22.82ID:XiNC+7Rg> それはMSお得意のワザと取らせないようにするやつじゃなくて?
そんなことどうやってやるんだよ w
0316デフォルトの名無しさん
2015/01/10(土) 11:06:00.41ID:s2E25yiA互換性をなくさないと独占できないだろう。
0317デフォルトの名無しさん
2015/01/10(土) 11:14:48.20ID:XiNC+7Rg> 互換性をなくさないと独占できないだろう。
何と何の互換性?
何を独占するのか?
正直何を言いたいのかさっぱりわからん
0318デフォルトの名無しさん
2015/01/10(土) 11:25:36.26ID:D1+6ni17Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'7'
>>> ^Z
C:\Users\\Desktop>py -3
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 6 2014, 22:15:05) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'7'
俺のもあってるな
Pythonが相当古いとか?ActivePythonだとか?
0319デフォルトの名無しさん
2015/01/11(日) 01:05:07.86ID:jQsmpaL2推薦図書
ttp://peace.2ch.net/test/read.cgi/tech/1418073244/239
Python 文法詳解、石本敦夫、オライリー
石本敦夫は、日本語によるPythonメーリングリストの初代管理人で、
パーフェクトPythonを書いた、6人の著者の内の一人でもある
パーフェクトPython、2013
も誤植は多いけど、内容は難しくて、まともだった
どの本でも初版は、30か所ぐらいは誤植があるのが普通。
漏れはいつも、それらを書き直しながら読んでいる
0320デフォルトの名無しさん
2015/01/11(日) 02:28:22.83ID:mrkqk1E9Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> platform.system()
'cli'
>>> platform.release()
''
わりと曲者だな
0321デフォルトの名無しさん
2015/01/11(日) 07:00:56.45ID:3ahz/Tk9クセもんと言うか、実装がまずいだけでしょ
0322デフォルトの名無しさん
2015/01/11(日) 07:23:57.66ID:kmCRN0/Lどこがいいのか書かないと単なる権威主義だな
少なくともここのやりとりを見る限りでは有力な反論がない限り地雷
http://peace.2ch.net/test/read.cgi/tech/1415173201/76-93
0323デフォルトの名無しさん
2015/01/11(日) 08:51:13.32ID:Sgia3tS2パーフェクトPythonの著者の一人か。そうと知っていたら買わなかった
あれは誤植が150箇所以上あるのに、1年経っても公式から正誤表が出ない糞本だぜ?
そりゃ人にはミスがあるものだけど、てにおはの間違いや単純な字抜けと異なり
パラメータの0と1を違えたり、サンプルコードがシンタックスエラーを出したり
コードの実行結果が現実と異なるのは技術本としてダメだろ
0324デフォルトの名無しさん
2015/01/11(日) 09:43:31.36ID:aOUO6IlLじゃあどうあるべきなんだよ
0325デフォルトの名無しさん
2015/01/11(日) 09:50:14.93ID:bCLJTFTq0326デフォルトの名無しさん
2015/01/11(日) 10:23:46.75ID:3ahz/Tk9俺なら
platform.system() → 'Windows'
platform.release() → '7'
platform.machine() → 'cli'
とするかな
0327デフォルトの名無しさん
2015/01/11(日) 10:29:11.71ID:CAsTcRy+■ このスレッドは過去ログ倉庫に格納されています