1 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 01:18:15 ] 【Pythonスレッド基本ルール】 1:問題文は自己省略せずに、直接全部貼り付けてください。 2:課題の「丸投げ」が最も好ましい提示法です。なるべく丸投げしてください。 3:数学問題は「○×法でせよ」だけでなく、その数式、前提条件も説明してください。 4:課題&宿題関連の質問はOKですが、それ以外の一般的な質問は禁止です。 5:もし回答プログラムがアップされたら、その返答と動作報告をお願いします。 【課題提示用テンプレ】 【 課題 】与えられた課題文をそのまま書きます 《必須》 【 用語 】数学用語、専門用語の意味、説明を書きます 《あれば必須》 【 期限 】提出期限、解答希望日があれば書きます 【 Ver 】希望するPythonバージョンがあれば書きます 【 補足 】課題について自分なりに補足する事、何か思う事があれば書きます。 丸投げでない場合は、途中までのソースとその経過報告、 質問点、疑問点を書きます(なるべく丸投げにしてください) 【回答プログラムの掲載場所】 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi
304 名前:updatechecker.py [2007/06/16(土) 20:01:59 ] >>297 どぞ。 # -*- coding: Shift_JIS -*- import urllib, smtplib from email.MIMEText import MIMEText from email.Charset import Charset def main(): # 掲示板の URL bbs = "pc11.2ch.net/test/read.cgi/tech/1153585095/l50" # 通知メールの宛て先 mail = "****@****.****.ne.jp" # SMTP サーバのホスト名 smtp = "mail.****.****.ne.jp" if updated(bbs): print "updated" notify(mail, smtp, bbs) else: print "not updated" def updated(URL): CACHE_FILE = "updatechecker.dat" # キャッシュファイルに保存したページ内容を取り出す try: file = open(CACHE_FILE, "rb") cached_contents = file.read() file.close() except IOError: cached_contents = None
305 名前:304の続き [2007/06/16(土) 20:04:38 ] # 現在のページ内容を得る file = urllib.urlopen(URL) contents = file.read() file.close() # 現在のページ内容をキャッシュファイルに保存する file = open(CACHE_FILE, "wb") file.write(contents) file.close() # ページ内容が変わっていたら更新アリと判定 (真偽値を返す) return contents != cached_contents def notify(address, server, URL): text = u"掲示板が更新されました。\n" + unicode(URL, "ascii") charset = Charset("ISO-2022-JP") msg = MIMEText(text.encode(charset.input_codec, "replace")) msg.set_charset(charset) msg["Subject"] = "Update notification from updatechecker.py" msg["From"] = '"updatechecker.py" <%s>' % address msg["To"] = address smtp = smtplib.SMTP() smtp.connect(server) smtp.sendmail(msg['From'], msg['To'].split(), msg.as_string()) smtp.quit() if __name__ == "__main__": main()
306 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 20:48:06 ] 傍から見てたんだけど、HTMLを丸ごとGETして キャッシュと比べるっていうのは思いつかなかった。 (掲示板がどんなHTMLを吐くかも不明なのに 更新チェックなんて無理とか思ってた) 勉強になったよ、ありがとー>>304
307 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 20:59:56 ] 大学生にもなって先生が教えてくれないって泣き言なんて馬鹿じゃね? 正直今の甘ったれた根性で社会に出るとお前個人じゃなくて同僚の迷惑になるのでそのまま留年してな
308 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 23:52:11 ] 何も教えてくれないなんてあるのか。 >297 が講義に出席してなかったとかじゃなくて?
309 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 00:01:00 ] 単にurllibの名前だけしか教えてくれなかったから使い方わからなーい! とかそういう感じじゃないかなぁ・・・
310 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 00:23:45 ] 月曜日が楽しみですね
311 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 07:47:19 ] >>306 掲示板の内容以外のものが、動的に生成されてるとだめじゃない? テキスト広告とか、参照元とか表示してるところあるじゃん。 2chなら、おすすめ2chとか。
312 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 08:42:32 ] 自分のHPならそれくらい把握できるだろ。 そのぶぶんだけ比較対象からはずせばいいだけジャン。
313 名前:306 mailto:sage [2007/06/17(日) 09:53:57 ] >>311 もちろん広告などが入ったらアウトだけど、 それは出題者が示して無いから仕方ない。 大抵の掲示板にはLast-ModifiedやETagは使えないから >>304 のアプローチがベストじゃないかな。 実際の利用時には、>>312 が書いてくれたように 余分な箇所を削るフィルタを掲示板ごとに書くことになると思う。 あと、おすすめ2chは、datのLast-Modifiedを比較すればOK。
314 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 12:31:28 ] そういう問題があるからRSSとかが発明されたわけだ
315 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:05:09 ] illusionってエロゲメーカーか。
316 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 16:15:03 ] >>314 いやRSSは最初はサイトサマリー blog のエントリーの更新を通知する、程度まで援用されてはいるけど bbs の書き込みをRSSで配信している例なんてほとんど見ないよ
317 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 16:32:02 ] フリー・レンタルBBS業界の一般的な話は知らないけど teacupはRSS配信してるみたいね
318 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:07:16 ] >>316 BBSというシステムがあまり最近の流行ではないから、古いシステムをそのまま使ってることが 多いというだけだと思う。いまどき新規に開発するBBSでRSSに対応しないというのはあり得ない。
319 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 01:16:36 ] >>318 blog のコメント欄なんかは RSS 配信しない事が多いね まあどこまでを BBS と言うかによるわけだけど
320 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 20:25:19 ] さて月曜日ですよ。 >297 はどこの課題だったのかなー。
321 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 20:28:01 ] ?
322 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 06:20:26 ] シカト来たーーー
323 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 15:13:28 ] >>319 それは確かにそうだ。 たまには、コメントやトラックバックのRSSを配信できるシステムもあるが、主流ではないか
324 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 11:16:36 ] 後で考えたら結局要らなかったのですが一応。 配列の配列を引数にとって、行列を入れ替える関数って どう書けばいいでしょうか? 具体的には [ [ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9,10,11,12], ] を渡すと [ [ 1, 5, 9], [ 2, 6,10], [ 3, 7,11], [ 4, 8,12], ] を返すようなものです。
325 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 11:36:25 ] zip関数を使う
326 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 11:48:26 ] >325 zip(*lst) でほぼ理想通りの結果が出ました!感謝!
327 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 13:22:53 ] 2階層は zip で結構イケルんですけど 3階層以上の配列(テンソル?)だと あまりいい手はないですよね numpy の類を使うしかないかな
328 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 19:58:32 ] 25日は来週の月y・・・
329 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 23:08:10 ] まだ猶予があったのか。ギリギリになってあわてる奴よりはなんぼかましですね。
330 名前:timer [2007/06/22(金) 21:34:32 ] 具体的な例ではなくて申し訳ないのですが、実行したい関数を数秒毎に繰り返し実行させる方法(ライブラリでもいいです) が教えていただきたいのですが。。。お願いします!!
331 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 21:46:04 ] import time def hoge(): print 'hoge' while(True): hoge() time.sleep(1)
332 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 21:46:12 ] >>330 import time while True: foo() time.sleep(3) fooが重い処理なら、例えばスレッドなんかを作る。 import time, thread while True: thread.start_new_thread(foo, ()) time.sleep(3) www.python.jp/doc/2.4/lib/module-time.html www.python.jp/doc/2.4/lib/module-thread.html
333 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:36:07 ] youtube-dlをjp.youtube.comとwww.youtube.com の両対応にしてください。 おながいします。
334 名前:timer [2007/06/25(月) 01:38:28 ] >>331 >>332 ありがとうございました!無事解決しました!!
335 名前:デフォルトの名無しさん [2007/06/26(火) 02:06:18 ] age
336 名前:デフォルトの名無しさん [2007/07/13(金) 18:44:07 ] 保守あげ
337 名前:デフォルトの名無しさん [2007/07/23(月) 20:13:20 ] [1, 1, 2, 2, 2, 3, 3, 4, 4, 1, 2]という数値のリストがあって、 それはリストのネストのレベルを表してます。 このリストをそのレベルどおりにネストさせるには、どうすればいいですか? [1, 1, [2, 2, 2, [3, 3, [4, 4]]], 1, [2]]
338 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 20:46:10 ] 最小値より大きいものを1つのリストにまとめたリストを返す関数を作って再帰 ただサイズが大きいと計算時間が厳しいと思う
339 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:02:26 ] >>337 ミもフタもない解答 def f(lst): lvl=lst[0] ans = '['*lvl + '%d'%lvl for i in lst[1:]: if i==lvl: ans += ',%d' % i elif i>lvl: ans += ',' + '['*(i-lvl) + '%d'%i else: ans += ']'*(lvl-i) + ',%d'%i lvl = i return eval(ans+']'*lvl)
340 名前:デフォルトの名無しさん [2007/07/24(火) 00:36:15 ] 【 課題 】 次の要求を満たすフィルタプログラムを作れ。 1.標準入力から行を読み込み、空白をカンマに変換し、標準出力に出力する 2.連続した複数の空白はひとつの空白と同じと見なす 3.タブ文字も空白と見なす 4.オプション等は設けない 5.フィルタとして動作するので余分なメッセージ類は一切出力しない 例として「1 Bill 1955 Oct 28」と入力したら「1,Bill,1955,Oct,28」と出力されるようにします。 オブジェクトの名前は次のように定義する line 標準入力から入力した行 termList lineにsplitメソッドを適用して生成したリスト term リストの各要素 ouputString 標準出力に出力する文字列 outputString = ’’ for term in termList[:-1]: outputString += term + ’,’ outputString += termList[-1] + ’\n’ sys.stdout.write(outputString) 上記のコーディング例を参考に作成せよ。 【 期限 】7月30日(月)まで。 何方かよろしくお願いします。
341 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:40:10 ] # -*- coding: Shift_JIS -*- def nest(L, level=1): L = list(L) # pop で破壊してよいようにコピーを作る results = [] while L: # 想定外の要素が見つかったらエラー assert not L[0] < level # 現在のレベルと等しい要素をそのまま results に追加 if L[0] == level: results.append(L.pop(0)) continue # 現在のレベル以上の要素を集める nested_items = [] while L: # 想定外の要素が見つかったらエラー assert not L[0] < level if L[0] == level: break nested_items.append(L.pop(0))
342 名前:デフォルトの名無しさん [2007/07/24(火) 00:42:48 ] # 集めた要素をネストする(再帰) results.append(nest(nested_items, level+1)) return results assert nest([1, 1, 2, 2, 2, 3, 3, 4, 4, 1, 2]) == [1, 1, [2, 2, 2, [3, 3, [4, 4]]], 1, [2]]
343 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:53:54 ] >>340 import sys for line in sys.stdin.readlines(): termList = line.split() outputString = '' for term in termList[:-1]: outputString += term + ', ' outputString += termList[-1] + '\n' sys.stdout.write(outputString)
344 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 18:07:35 ] oxtu.py
345 名前:デフォルトの名無しさん [2007/08/02(木) 19:06:37 ] oxtu.py age
346 名前:デフォルトの名無しさん [2007/08/12(日) 17:58:39 ] 【 課題 】 宿題じゃないが、アルゴリズム考えててこんがらかったので質問。 lst = [dataX, ..., data2, data1, data0] newlst = [dataM, ..., dataN+1, dataN] # len(lst) == 任意, len(newlst) <= 4, M >= X このようなリストがあった時、newlstをlstに重複なくマージするにはどうしたらよい? つまり、 lst = [data3, data2, data1, data0] newlst = [data4, data3, data2] assert merge(lst, newlst) == [data4, data3, data2, data1, data0] このときのmergeをどう作ればよいのか知りたい。 なおインデックスに飛びは無く、dataは等価比較可能。
347 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 18:17:13 ] list(set(lst + newlst))
348 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 18:33:50 ] >>347 すまん、忘れてたが順序関係は維持したままで。 ただしdata同士の順序比較は出来ない。 インデックスは順序のために便宜的につけただけで、実際には通し番号などは無い。
349 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 22:24:18 ] > data同士の順序比較は出来ない > 実際には通し番号などは無い ちょっ、そうしたら、 lst = [a, b, c] newlst = [b,x,y] のとき、c, x, y, の順序はどうやって決めるんだ?
350 名前:デフォルトの名無しさん [2007/08/12(日) 22:25:04 ] ふつうに for item in newlst: if item not in lst: lst.insert(0, item) ではダメなの?
351 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 22:28:39 ] あれ、>>346 見たら > インデックスに飛びは無く って書いてあるな。順序あるのか無いのか、はっきりしてくれ。
352 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 23:29:08 ] lst[:lst.index(newlst[0])] + newlst
353 名前:346 mailto:sage [2007/08/13(月) 04:15:28 ] 質問しといて何だが自己解決した。 色々前提条件説明しきれてなくてスマン。付き合ってくれた人有り難う。 dpaste.com/16708/ 要はネットからエントリ型の更新情報をダウンロードしてローカルデータに追加するため、 lstとnewlstに重複した情報があるかもしれないが、そこだけstripしたかったというお話。 エントリに日時情報があればもっと簡単だったんだけどね。
354 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 08:34:13 ] >>353 エントリ型って何?
355 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 08:35:28 ] >353 を読む限り順序なんてなくて set で要素抽出をすればいいだけじゃん 元の list 保存しておいて orig_list.index( some_data ) で 個別 index はでるんだし
356 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 15:37:39 ] 最後lstとnewlstの足し算逆じゃね? ていうか明らかにfor文必要ないから
357 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 11:32:42 ] 下のような2つのリストがあるとき a = ["A","B","C","D"] b = [5, 3, 8, 2] aのリストをbの値の大きい順にソートしたい、この場合、a = ["C","A","B","D"] b = [8,5,3,2]を求めたいのですがどのように書けばよろしいでしょうか。 アドバイスお掩蓋します。
358 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 12:00:11 ] >>> zip(b, a) [(5, 'A'), (3, 'B'), (8, 'C'), (2, 'D')] >>> sorted(zip(b, a)) [(2, 'D'), (3, 'B'), (5, 'A'), (8, 'C')] >>> sorted(zip(b, a), reverse=True) [(8, 'C'), (5, 'A'), (3, 'B'), (2, 'D')] >>> [x[1] for x in sorted(zip(b, a), reverse=True)] ['C', 'A', 'B', 'D'] >>>
359 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 12:12:37 ] >>358 zipでこんな簡単にできると思いませんでした。 ありがとうございました。
360 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 02:27:14 ] 質問です。 外のwebサーバ(自分はドキュメントやCGIスクリプトの設置はできるユーザ権限)にJythonって設置できますか? やっぱサーバの管理者権限いりますよね?
361 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 03:40:39 ] 自分でJavaとJythonインスコすればおk。
362 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 14:19:06 ] telnet、ssh禁止とかだったらたぶん無理
363 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 15:37:04 ] >>362 それがOKならいけるってことですね。 いっちょあやしまれないように暗躍してみます。
364 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:17:55 ] Jythonについて質問した者です。 ローカル環境でいじくり、無事jythonのインストール方法を理解できました。 これで、python ver 1.5.2からアップデートしない大学のサーバを 出し抜いてやるぜと思ったら、javaすら入っていませんでした。
365 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 23:51:18 ] 無けりゃ入れるだけよ
366 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:24:08 ] java設置失敗。 そして良く考えたらJythonとCPythonとの互換性も追い付いているのかどうか良く知らない・・・。 ファイルの実行や一般的なUNIXコマンドを使う権限があるので、リモートでPython2.5をコンパイルしてみた。 が、ソケットのヘッダファイルを読み込めなかった。 くそっくそっ。 かっこいいCGI置きたいよぅ。
367 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 00:26:15 ] いまどきCGIである時点であまりかっこいいとは言えない
368 名前:デフォルトの名無しさん [2007/08/28(火) 10:31:19 ] 結局GUIは、 ・Tkinter ・wxPython のどちら(その他にもありますか?)が良いのでしょうか? 環境はMac(できればLinuxも)、 一般的で、かつ、将来性のあるGUIを選びたいです。
369 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 10:42:50 ] wxPython
370 名前:368 mailto:sage [2007/08/28(火) 10:48:29 ] ラジャ。 ついでですが、Tkinterのダメな理由を教えて下さい。 (それを知っておけば心残り無くwxPythonできるので)
371 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 10:53:11 ] Tkinterは、ちょっと見たら気づくと思うけど ウェジットがしょぼい。 簡単なスクリプトには使えるだろうけど…
372 名前:368 mailto:sage [2007/08/28(火) 11:04:25 ] ではショボイTkinterはやめておきます。 ところで、Pythonで配布されてるGUIツールってありますか? サンプルとかコマンドで動くスクリプトはネットに転がってますが、GUIスクリプトはあんまり見ないような。
373 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 11:50:00 ] >>372 IDLE
374 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 11:58:05 ] >>372 wxPythonをインストールすれば、XRCedっていう_GUIでI編集出来るツールが入ってる。 あと、wxPython に決めたら決めたで、Mac板のプログラムスレにも書いとけよ。
375 名前:368 mailto:sage [2007/08/28(火) 12:36:35 ] >>374 wxPythonにケテーイはしましたが、マカーとはマカー文脈で会話するので...
376 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 13:50:51 ] wxgladeがいいんじゃね?
377 名前:368 mailto:sage [2007/08/28(火) 13:57:18 ] そうなの?...
378 名前:368 mailto:sage [2007/08/28(火) 14:03:09 ] あ、wxGladeってのはwxPythonのIDEみたいなものですね。 了解しました。使ってみます。 レイアウトマネージャ方式っていうか、位置の融通は無さそうですね。 コツを掴めば良いのでしょうが。
379 名前:デフォルトの名無しさん [2007/08/28(火) 14:11:43 ] hobby9.2ch.net/test/read.cgi/appli/1186504133/79 どなたか頼みます。。。。
380 名前:デフォルトの名無しさん [2007/11/12(月) 00:23:27 ] pythonで作られたwikiが使えるサーバっていうか、 ここ↓みたいなのありますか? wiki.fdiary.net/ (rubyで作られたwiki実装のhikiで自分?のwikiを作れる)
381 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 10:15:16 ] ttp://wiki.python.org/moin/PythonWikiEngines
382 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 01:27:52 ] 【 課題 】 テキストファイルを読んで、 その先頭に'>'を追加したファイルを出力するコードを書きなさい 【 用語 】 【 期限 】出来れば明日中になんとかしたいです。 【 Ver 】2.5です。 【 補足 】テキストファイル(test.txt)の"先頭に"'?'を追加するにはどうしたらいいんでしょうか?open関数の"w"だとテキストの中身消去しちゃうし・・お手上げです。ヒントでも良いので教えてください。 自分でやった結果↓ f=open ("test.txt","r") w=f.read() a=">"+w f.close() ------- 【 課題 】 shift_jisのファイルを読んで utf-8に変換したファイルを出力するコードを書きなさい。 【 用語 】 【 期限 】出来れば明日中になんとかしたいです。 【 Ver 】2.5です。 【 補足 】 自分でやった結果↓ #coding: shift_jis f=open("kadai7.txt","r")
383 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 01:40:58 ] 一つ目: file = open("test.txt", "r") lines = file.readlines() file.close() file = open("test.txt", "w") for line in lines: file.write(">"+line) file.close() 二つ目: import codecs src = codecs.open("sjis.txt", "r", encoding="sjis") dest = codecs.open("utf8.txt", "w", encoding="utf-8") dest.write(src.read()) dest.close() src.close() がんばりましょう。
384 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 01:45:37 ] やさしいなぁ。。
385 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 02:05:37 ] >>382 # 1. import os file("test2.txt", "w").writelines(">" + x for x in file("test.txt")) os.remove("test.txt") os.rename("test2.txt", "test.txt") # 2. doc = unicode(file("sjis.txt").read(), "Shift_JIS") file("utf8.txt", "w").write(doc.encode("utf-8"))
386 名前:382 mailto:sage [2007/12/03(月) 05:00:17 ] 即レスありがとうございました。 本当に感謝してます。 教えてもらった答え丸写しじゃなく自分なりに工夫して動作確認してみます。 いつの日か教える側に回れたら・・・ ありがとうございました。
387 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 20:47:50 ] nanoblog
388 名前:デフォルトの名無しさん [2008/02/03(日) 19:52:36 ] polog.org/archives/2007/12/01003449.php (14989440..15318688).step(1) do |i| chr_a = i.to_s(16).scan(/../).map{|s| eval("0x#{s}")} next unless( chr_a[1] >= 128 && chr_a[1] <= 191 && chr_a[2] >= 128 && chr_a[2] <= 191 ) puts "#{chr_a.map{|i| i.chr}.join}\t#{chr_a.join(',')}" end Python ですべての漢字を列挙するにはどうしたら 良いでしょうか?
389 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:52:35 ] import unicodedata kanji = [] for i in range(0xffff): c = unichr(i) n = unicodedata.name(c, '') if 'CJK' in n and 'IDEOGRAPH' in n: kanji.append(c) print len(kanji) 何を漢字とみなすかが問題だけど、一般的にはこんなもんでいいんじゃないかな
390 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:54:13 ] kanji.py for c in range(0xe4b880, 0xe9bea1): c0, c1, c2 = ((c / 65536) % 256, (c / 256) % 256, c % 256) if c1 >= 128 and c1 <= 191 and c2 >= 128 and c2 <=191: print '%c%c%c\t%d\t%d\t%d' % (c0, c1, c2, c0, c1, c2) $ kanji.py > hoge $ cat hoge 一 228 184 128 ... 龠 233 190 160
391 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 01:25:55 ] >>388 それRuby? ださすぎw
392 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:38:29 ] >>389 fd = open("kanji_cjk.dat", "a+") i = 1 for e in kanji: temp = e.encode('utf-8') #print temp, i = i + 1 if i%16 == 0: temp = temp + "\n" fd.write(temp) fd.close() 始めよくわからない漢字が表示されてエンコードの 指定の仕方が悪いのかと躓いたのですがよくよく考えたら 使ってるエディタがutf-8文字列を認識してなく文字化け しているだけのようでした orz >>389-390 len(S1) 27973個, len(S2) 20897個 共通集合(S1とS2に共通な要素) 20897個 for c in S1.intersection(S2): 差集合(S1特有の要素) 7076個 for c in S1.difference(S2): 集合演算が地味に便利だと思いました… どうもありがとうございました!
393 名前:デフォルトの名無しさん [2008/02/07(木) 16:51:26 ] www.uploda.org/uporg1238130.txt_OQa3BGD4faITEXwNBMoL/uporg1238130.txt 英語サイトならIE.LocationNameで取得した文字列を扱えるのに 日本語のサイトの場合にはエラーになり、 .encode('utf-8')などをつけてエラーを回避しても文字はアルファベット部分しか表示されません。 ほかにもfindとか文字列操作したいけどうまくいかなくて ぶっちゃけこのスクリプトが日本語表示まで含めて動くコードを教えてください。
394 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:55:52 ] いやなスクリプトだなw
395 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:40:27 ] どういう宿題だよ
396 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:43:02 ] 2ゲットスクリプトじゃなければ答える人もいただろうにね
397 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:48:19 ] 真の目的を隠したスクリプトに書き換える程度の応用力が望まれますね
398 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:50:41 ] >>393 strに代入すんなよ
399 名前:393 [2008/02/07(木) 17:56:13 ] いや、とっくに規制食らって投稿できないからいらぬ心配ですよ。 ★080204 ニュース速報+「糞スレは立てない約束」AA2get荒らし報告 qb5.2ch.net/test/read.cgi/sec2chd/1202100384/ このスクリプトを選んだのは作ったやつの中で短いからで、 別に動くのを確認したらそれでいいんですよ。 荒らしっていうけど3以降には書き込んだりしないんだから残り998スレはほかの人が自由に書き込めるんですよ? 何の問題もないでしょう。
400 名前:デフォルトの名無しさん [2008/02/07(木) 18:13:43 ] scripts.web.fc2.com/scriptsup/Auto2Get2chNSP.uws UWSCで書いたやつと同じものがPythonならどんな感じになるかなって作ってるわけで、 これを手助けしたから荒らされるなんて心配も無用。 一応目標はpanda3d.org/ 使って3Dぐりぐりすることなわけで。 ああ、3Dぐりぐりに文字エンコードは関係ないですかそうですか・・・
401 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 18:53:06 ] >>399 だれもそんな心配してないよwww
402 名前:デフォルトの名無しさん [2008/02/07(木) 20:21:55 ] >>398 やあ表示できたよありがとう。 DOSプロンプトにならちゃんと表示されるようになった。 src.split('<')とするのには気が付いたけどまた躓いてるし。 WingIDE無料版がそれなりに使える。 日本語表示はされないものの、文字コードはそのまま扱えてるし プレーンテキストよりかなり楽チン。 エディタだけじゃなくShellまで漢字に非対応なのがちょっと残念。
403 名前:デフォルトの名無しさん [2008/02/07(木) 22:17:26 ] 流れがよくわからんだが、ようは、日本語のことを聞きたいわけね
404 名前:デフォルトの名無しさん [2008/02/08(金) 00:59:25 ] なんとかHTML最後まで読んでスレッド表示できるとこまでいった あとは制御を正しくやって投稿まで出来れば完成か。 丸二日かかる計算だけどここまでやってもまださっぱりだ。