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
よくまとまってた。あとで読む
0205デフォルトの名無しさん
2014/12/09(火) 19:37:38.16ID:ufM684Cvバイト文字列って何だろ?
バイナリファイルのこと?
0206デフォルトの名無しさん
2014/12/09(火) 19:51:55.53ID:6Ly9A1WV当該本には
「バイト文字列」は、「バイナリ表現」「オクテット文字列」
「バイトストリーム」「バイト列」などと呼ばれることがあります。
バイト文字列はPerlから見た場合は単なるバイト列のように見えます。
知っているのはプログラマだけで、Perlはそれが文字列であるかどうかを知りません。
と書いてあります。
0207デフォルトの名無しさん
2014/12/09(火) 20:03:39.61ID:0tFp5ltl0208デフォルトの名無しさん
2014/12/09(火) 21:35:24.14ID:ufM684Cvやっぱりテキストをバイナリデータに変換して外とやりとりすべし、という風に読めるな
だとしたら、その原則は言語に関係ないよ
メインフレームなど異質なアーキテクチャのコンピュータまで視野に入れれば、バイナリで
データをやりとりした方が無難という一般論に近い話だ
PC同士、ましてWindows同士ならば、cp932のテキストのままで何の問題もない
むしろutf-8などという後から出てきたコードに変換する方が恐い
0209デフォルトの名無しさん
2014/12/09(火) 22:18:44.43ID:Z26sHvLQ0210デフォルトの名無しさん
2014/12/09(火) 22:24:28.18ID:ufM684Cv今やっちゃいけない話なのか?
0211デフォルトの名無しさん
2014/12/09(火) 22:54:18.19ID:kgT7s1o1Python2ならそれと同じ
# coding: utf8
buf = open(...).read() # bufはstr(バイト文字列)
ustr = buf.decode("cp932") # CP932なバイト文字列をUNICODE文字列に変換
print ustr.encode("utf8") # UNICODE文字列をバイト文字列にして出力
0212デフォルトの名無しさん
2014/12/09(火) 22:56:16.84ID:Z26sHvLQやってもいいけど、はたから見たら老害でしかないぞ
0213デフォルトの名無しさん
2014/12/09(火) 23:44:44.11ID:ufM684Cvそうか。>>208の回答を老害と言ってのける君は、さぞ素晴らしい回答をお持ちなのだろう
ぜひとも>>204に答えてあげてほしい
まさか批判だけして質問には答えないってことはないよね?
0214デフォルトの名無しさん
2014/12/09(火) 23:51:43.65ID:wjaKv5Op0215デフォルトの名無しさん
2014/12/10(水) 00:01:59.64ID:OIninACF>>211 に十分な答えが書いてある。
入力でデコード出力でエンコード
老害さん以外誰も「Windowsだったら中でCP932使ってるから外に出すときもそのままで問題ないUTF-8に変換なんて恐ろしい」なんて事は書いてない
0216デフォルトの名無しさん
2014/12/10(水) 00:05:37.30ID:qqk3Jq5w>>204 で問題ないだろ
何を言ってるんだよ w
0217デフォルトの名無しさん
2014/12/10(水) 02:01:12.95ID:ZinxyrVVcp932に全部代えてくれとか要望でたりする
0218デフォルトの名無しさん
2014/12/10(水) 02:08:07.23ID:pKsr4IMo0219デフォルトの名無しさん
2014/12/10(水) 02:30:51.47ID:ZinxyrVV0220デフォルトの名無しさん
2014/12/10(水) 02:37:11.79ID:aZsooZTQこれがwin-win。
0221デフォルトの名無しさん
2014/12/10(水) 03:21:24.95ID:jg27CPmW0222デフォルトの名無しさん
2014/12/10(水) 03:42:57.87ID:ZinxyrVV0223デフォルトの名無しさん
2014/12/10(水) 05:05:58.97ID:apQ/RdY4Python 2.7 or 3以降で処理したいのですが、
丁度いいパッケージはありませんか?
.pcap形式で一旦溜めずに、逐次処理できる方法を
探してます。
当方Win7 64bit、センサはたとえば
北陽UTM-30LX-EWを想定しています。
0224デフォルトの名無しさん
2014/12/10(水) 07:20:42.27ID:qqk3Jq5wいつの時代のメモ帳だよ w
0225デフォルトの名無しさん
2014/12/10(水) 07:42:08.52ID:OLff/u5a0226デフォルトの名無しさん
2014/12/10(水) 08:04:12.84ID:8ny1pSA3TCP か UDP か分かんないけど、
こんなもんでどう?
Lib/http/server.py
Lib/socket.py
Lib/socketserver.py
標準でどうでしょう?
最初は中を覗いてみるのをお勧めする。
0227デフォルトの名無しさん
2014/12/10(水) 08:22:01.95ID:6oxelApi0228デフォルトの名無しさん
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モジュール
■ このスレッドは過去ログ倉庫に格納されています