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
91 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 19:31:13 ] >>88 勉強しろよ
92 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 19:43:00 ] 日本語の使えなさはPerlレベルw
93 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 19:45:26 ] >>92 おまえの頭がPerlレベル
94 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 19:49:12 ] 煽るだけのやつ、早くいなくならないかな・・・
95 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 20:29:37 ] perlで日本語処理かけないなんて そうとうダメだぽ
96 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 20:31:25 ] そもそも日本語に限らずパイソンの文字列操作はダメだろ。 これがpythonicねぇとため息が出る。
97 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 20:33:51 ] Python至上主義者は、そんなことは些細なこととして、記憶から消し去ります。
98 名前:88 mailto:sage [2006/08/26(土) 21:05:27 ] >>91 まさにそれなんだけどさw 一般的にPythonって、直感的に使えるし、難しいことはライブラリをimprot すれば共通のインターフェイスで使える。 なのになんで日本語操作には勉強が必要なんだ、という叫びだな。 この変なトリックはパイ然としねーw 何、文字列型をユニコード型に変換ってw
99 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 21:06:54 ] Perlレベルw
100 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 21:27:07 ] なんだ勉強嫌いの子か
101 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 21:52:08 ] >>100 そんくらい面倒がらずにやるし、ましてや解かりませんとも言ってない。 「がっかり」だ、と言っているw この仕様は、だせーよw
102 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 22:11:12 ] >>101 具体的に要望を書いたほうが建設的だと思う
103 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 01:43:33 ] Perl レベルなのは確かだと思う. でもそれを言ったら Ruby 以外の外国産言語はどれも大差ない. 内部コードはユニコード、入出力時に変換します. 変換しなければ基本はASCII扱いで、SJISとかは危険よ. 問題なのは各言語のコーデックの機能を使いこなせないやつの能力.
104 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 02:33:29 ] > 問題なのは各言語のコーデックの機能を使いこなせないやつの能力. いや、むしろ使いこなしのノウハウが誰にでも分かるように まとまった形で広く公開されていないところが問題。 初心者に「とりあえずチュートリアル嫁」と言うのと同じぐらい簡単な definitive なリソースが必要。 って言うのは簡単だけどな(苦笑
105 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 02:55:30 ] ぶっちゃけ日本語のテキスト処理は難しい。 文字とバイトが一致してない。 多数の文字コードが混在している。 互換性のない文字集合がいくつもある。 あっちを立てるとこっちが立たない。 あるアプリでうまくいく方法が別のアプリでは通用しない。 簡単かつ明瞭に誰にでも分かるように仕様を設計することは不可能、もしくは非常に困難。 簡単かつ明瞭に誰にでも分かるように説明することはさらに困難。 理解できない人がいても不思議ではない。 理解できないことに罪はない。 根本的に難しい。 終わっている。 Imagine there's no encodings, it isn't hard to do, nothing to encode or decode, no charset too, imagine all the people living with Unicode... You may say I'm a dreamer, but I'm not the only one, I hope some day you'll join us, and the world will be as one.
106 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 05:05:25 ] >>103 まともな評価が出来る人がいると分かって、安心したよ。
107 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 09:48:54 ] Ruby房が湧いた
108 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 11:07:57 ] >>105 自分が理解できないからって(w
109 名前:デフォルトの名無しさん [2006/08/27(日) 11:10:35 ] わかるのだけでも(間違ってても)良いのでお願いします(>_<) @地球の内部から地形を形成する力をなんと言うか A地球の外部から地形を形成する力をなんと言うか Bウェゲナーの大陸はパンゲアという1つの大陸から分かれたとする説を何というか C地球の外周は約何kmか D地球の表面は厚さ100kmほどのプレートに覆われ、これが移動するため、 現在のような大陸分布や山脈の形成が見られたとする説を何というか E先カンブリア代の地層がむき出しになっている地形を何というか F先カンブリア代の地層の上に古・中生代の地層が重なっているものを何というか G新期造山帯と古期造山帯と安定陸塊で最も古い地形はどれか H新期造山帯・古期造山帯・安定陸塊からでる地下資源をそれぞれ答よ I新期造山帯は大きく2つに分けられる。2つの造山帯(山系)の名称を答えよ
110 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 11:23:04 ] >>109 スレ違い
111 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 11:35:04 ] ''' 受験に備えて復習する 正誤は知らん 内的営力 外的営力 大陸移動説 40k プレートテクトニクス 楯状地 卓状地 安定陸塊 石油、石炭、鉄鉱石 アルプス・ヒマラヤ造山帯、環太平洋造山帯 '''
112 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 12:09:27 ] 最近Pyスレを荒らしているのは高校生なのかなぁ
113 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 12:36:16 ] 高校生にしてはレベル低いね
114 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 22:36:36 ] Λ_Λ . . . .: : : ::: : :: ::::::::: ::::::::::::::::::::::::::::: ナカチャン… /:彡ミ゛ヽ;)ー、 . . .: : : :::::: ::::::::::::::::::::::::::::::::: / :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . ::::::::::::::::::::::::::::::::::::::: / :::/;;: ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::  ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ,,,,, / ,' 3 `ヽーっ l ⊃ ⌒_つ `'ー---‐'''''
115 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 22:49:33 ] >>112 そのうち飽きるさ。
116 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 18:23:41 ] 40kkmちょっと和んだ
117 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 20:46:57 ] おっpy
118 名前:デフォルトの名無しさん mailto:sage [2006/08/30(水) 23:55:41 ] やっとおだやかになってきたねー
119 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 00:45:21 ] スレが立って一ヶ月以上。未だに宿題が出てこない件について。 つか、このスレいらんね。
120 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 07:09:29 ] 夏休みの真っ最中にPythonの宿題が出るとは思えない。
121 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 21:39:21 ] さー、明日からしまっていこうかー
122 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 23:18:27 ] 大学の夏休みはまだまだ続きます
123 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 23:38:58 ] もしかすると、平常日と夏休みとがはっきり区別されない人間が一番やばいのでは
124 名前:デフォルトの名無しさん mailto:sage [2006/09/01(金) 00:25:10 ] 8月で夏休みが終わる大学もあるんだがな
125 名前:デフォルトの名無しさん mailto:sage [2006/09/01(金) 08:44:33 ] ま、今はどこの大学も中身は小学校レベルだしな。卒論も昆虫採集以下だし。
126 名前:デフォルトの名無しさん mailto:sage [2006/09/04(月) 12:15:34 ] 卒論大変だったなぁ… >>125 は大学の先生ですね。それ以外はこういうこと書けないし。 大学の先生もPythonスレ見てるなんて、すごいぜpython
127 名前:デフォルトの名無しさん mailto:sage [2006/09/04(月) 12:51:19 ] 大学の先生も小学校レベルなんですよ
128 名前:デフォルトの名無しさん mailto:sage [2006/09/04(月) 15:14:54 ] それは当たってる。
129 名前:デフォルトの名無しさん mailto:sage [2006/09/05(火) 00:36:59 ] 宿題ではないんですが誰も相談できる人がいないのでここで質問してもいいんでしょうか?
130 名前:デフォルトの名無しさん mailto:sage [2006/09/05(火) 09:07:09 ] 内容によるんでね?
131 名前:デフォルトの名無しさん mailto:sage [2006/09/05(火) 11:28:20 ] やる前にふさわしいかどうか考えない やってみてダメだったら例外処理する それがPython流
132 名前:デフォルトの名無しさん mailto:sage [2006/09/05(火) 15:52:00 ] 突然の書き込みすみません。>< 集計とってます。 ベストなバストはなにサイズ? 協力してちょ human5.2ch.net/test/read.cgi/honobono/1157286711/l50
133 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 00:35:11 ] >>129 の質問てのは >>132 のことだったのか?
134 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 23:21:14 ] ひさしぶりにMLを見たよー。 ムネオたんへの皆のレスがなんとなくちくちくしてるよー。
135 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 23:24:09 ] ムネオたんって誰? 鈴木宗男?
136 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 00:06:07 ] ┐(゚〜゚)┌
137 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 00:06:48 ] そう
138 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 12:39:34 ] 【 課題 】 ■1 ファイルの読み込み テキスト・ファイルは、改行で区切られた行のリストである。 Pythonでテキスト・ファイルを扱うときも、リストとして処理されるので、for構文を使う。 for line in open(ファイル名, "r"): 一行ごとの処理内容 ...... "r"は、read、すなわち「読み込み」の意味である。処理結果は何らかの仕方で書き出す必要があるが、今回は単にprint文で画面に書き出すだけにする。 ファイル名は、 python file_read.py ファイル名1 ファイル名2 ファイル名3 ... というように引数に指定し、それを前回のプログラムのようにfor構文で一つ一つファイル名を読み取り、それを一つごとオープンし、それを再びfor構文で一行ずつ読み込み、その一行のデータを処理して書き出す。これを繰り返していく。 ■1.1 課題:単純なコピー まず、単純にテキスト・ファイルをそのまま書き出すプログラムcat.pyを作ろう。 sysプログラムをインポートする for ファイル名用変数 in 引数のリスト: for 一行を代入する変数 in open(ファイル名用変数、"r"): 一行を書き出す 単純なプログラムのようだが、実はUnixでよく使われる基本コマンドcat、MS-DOSでは typeが、まさにこれと同じ働きをする。使い方としては、 python cat.py ファイル名1 ファイル名2 ... > 新規ファイル名 として、複数のファイルの書き出した結果を一つのファイルに合体する。 python cat.py ファイル名 \ more|(Unixの場合はless)として、一画面毎、表示を止める。 という二つの場合がある。 【 期限 】とくにないっす。 【 補足 】 なんか大谷大学っていうとこのここ→tibet.que.ne.jp/otani/2004python/2004pythonmenu.html から見付けてきたやつです。 お暇な方お願いしますm(_ _)m
139 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 19:54:49 ] 最近の宿題ってのはそこまで手取り足取り教えてくれるのな >Pythonでテキスト・ファイルを扱うときも、リストとして処理される これはどうかと思う
140 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 20:35:50 ] for-in使うとリストのように、処理されるってだけだよな。 enumrator?
141 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 00:39:47 ] pythonからexcelを起動して、表に上からa = 1, a = 2・・・・a = 100と 表示させよ。 という問題です。宜しくお願いします。
142 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 11:57:38 ] print "pythonからexcelを起動して、表に上からa = 1, a = 2・・・・a = 100と"
143 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:47:31 ] >>142 おい! "と"、はいらなんじゃないかと
144 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:08:09 ] 些細なバグだな
145 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:52:50 ] >>141 どうみても自分のやりたいことを問題のふりして聞こうとしてるよな。 素直に聞いてりゃ誰か教えてくれただろうにねぇ。
146 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:56:04 ] でも戸がねぇと埃が入ってきちゃうから
147 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 15:40:18 ] できたぞ XList = [] for i in range(100): XList.append("a = %d" % (i+1)) XText = "\n".join(XList) XFile = file("PyExcel.xls", "w") XFile.write(XText) XFile.close() import os os.system("open /Applications/Microsoft\\ Office\\ X/Microsoft\\ Excel PyExcel.xls")
148 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 22:37:30 ] >>147 動きました。どうもありがとうございます。
149 名前:デフォルトの名無しさん [2006/10/27(金) 02:56:48 ] 適当に文字を打ち込んで、その数をカウントする。
150 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 03:10:48 ] print len(raw_input('enter something'))
151 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 02:21:15 ] 行列の足し算 map(lambda x: map(lambda y: y[0]+y[1],x),[zip(*x) for x in zip(a,b)])
152 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 16:14:33 ] >>151 行列はNumPy使おうよ。
153 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 17:33:14 ] 標準に入ってないし
154 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 22:47:45 ] こっちが正解だった [[sum(y) for y in zip(*x)] for x in zip(a,b,c)]
155 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 10:12:32 ] xの転置行列 zip(*x) ベクトルu,vの内積 sum(s*t for s,t in zip(u,v)) 行列x,yの行列積 [[sum(s*t for s,t in zip(u,v)) for v in zip(*y)] for u in x]
156 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 02:08:14 ] zipは99%parallel iterationにしか使われてない -- guido ジード分かってねーーーーーーーーーーー!!! 転置行列だよ転置行列!! izipって何語???キモーーーーーーーーーーー!!!ヤメレーーー!
157 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 02:40:01 ] 行列はリストですが、リストは行列ではありません
158 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 22:31:37 ] 誘導されてきました 1Gぐらいあるテキストファイルから適当な行をランダムサンプリングしたい 中身はこんな感じ 1 10 120 1.0 2 11 110 2.0 3 11 110 2.0 4 9 90 3.0 5... 1000000 ..... こここから1000行だけ ランダムな行をとりだしたいのですがおねがいできないでしょうか? 10 .. 12 .. 100 .. 119... 1Gあるので一度にとりこめない
159 名前:デフォルトの名無しさん mailto:sage [2006/11/11(土) 22:37:26 ] >>158 まずファイルの行数を数える。 次にサンプリングする行数を決める。 import random lines = random.sample(xrange(line_of_file),1000) あとはファイルを1行づつ読んでいって,inesにある行だけ取り込む。
160 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 02:00:42 ] チョイ変化球として・・・ その1Gのファイルの一行一行にそれほど意味が無いんだったら、 その一行ごとの各項目の平均とか標準偏差とかを出しておいて、 その数値に基づいて1000回ランダム処理することで、 1000行取り出してるように見せかけるとか・・・
161 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 06:00:13 ] > その数値に基づいて1000回ランダム処理することで、 > 1000行取り出してるように見せかけるとか・・・ kwsk
162 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 16:28:17 ] ある範囲内にある頻度でランダムに値をとる数値の組が欲しい だけだったら、そのとおりに数値を生成してあげれば十分でしょうという こと。ただし、1行が1人を表してて、数値がその人の属性を表してる ような場合だと通用しないけど・・・
163 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 14:44:01 ] (゚∀゚≡゚∀゚) ?
164 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 00:05:57 ] 静かだね。
165 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 04:38:54 ] アーヴェー、マリ〜〜〜〜ィアー♪
166 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 11:46:13 ] POPfileなどの迷惑メール検出ソフトを使って、 2chの工作員の発言を学習させて検出したいのですが 2chのインターフェイスをメールソフトにする方法ないのでしょうか? futasukeみたいな感じで2chのアクセス方法にインターフェイスかませば POPfileを経由して2chを診れるとおもうのですが
167 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 11:58:28 ] >>166 それpla(ry
168 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 16:26:56 ] 2chブラウザの方に実装した方がスマートじゃない?
169 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 20:05:23 ] メーラー側で迷惑メール判定できるなら、dat を eml とか mbox とかに変換するのもありだね
170 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 20:16:31 ] gmailの迷惑メール分類機能とか使いたい場合は 本当に一度フォワードする必要がある
171 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 02:32:50 ] >>167 pyagger とかないの?
172 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 02:36:27 ] >>171 任せた
173 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 21:20:31 ] それplaggerでできるんでしょ?
174 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 10:35:19 ] 宿題じゃないんですが、 初心者質問スレがないんで、お邪魔します。 ここのスクリプトなんですけど、 home.cfl.rr.com/genecash/digital_camera/EXIF.py FIELD_TYPES=( (0, 'X', 'Proprietary'), # no such type (1, 'B', 'Byte'), (1, 'A', 'ASCII'), (2, 'S', 'Short'), (4, 'L', 'Long'), (8, 'R', 'Ratio'), (1, 'SB', 'Signed Byte'), (1, 'U', 'Undefined'), (2, 'SS', 'Signed Short'), (4, 'SL', 'Signed Long'), (8, 'SR', 'Signed Ratio') ) の部分で、 ./EXIF.py: array assign: line 105: syntax error near unexpected token `(0' ./EXIF.py: array assign: line 105: ` (0, 'X', 'Proprietary'), # no such type' と出やがります。 タブの使い方は問題なさそうなんですが、 これって文法的にどっか間違ってますか?
175 名前:174 mailto:sage [2007/03/30(金) 10:38:10 ] ごめんなさい。 #!/usr/bin/env python がないだけでしたorz
176 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 10:38:45 ] ナ ゝ ナ ゝ / 十_" ー;=‐ |! |! cト cト /^、_ノ | 、.__ つ (.__  ̄ ̄ ̄ ̄ ・ ・ ,. -─- 、._ ,. -─v─- 、._ _ ,. ‐'´ `‐、 __, ‐'´ ヽ, ‐''´~ `´ ̄`‐、 / ヽ、_/)ノ ≦ ヽ‐'´ `‐、 / / ̄~`'''‐- 、.._ ノ ≦ ≦ ヽ i. /  ̄l 7 1 イ/l/|ヘ ヽヘ ≦ , ,ヘ 、 i ,!ヘ. / ‐- 、._ u |/ l |/ ! ! | ヾ ヾ ヽ_、l イ/l/|/ヽlヘト、 │ . |〃、!ミ: -─ゝ、 __ .l レ二ヽ、 、__∠´_ |/ | ! | | ヾ ヾヘト、 l !_ヒ; L(.:)_ `ー'"〈:)_,` / riヽ_(:)_i '_(:)_/ ! ‐;-、 、__,._-─‐ヽ. ,.-'、 /`゙i u ´ ヽ ! !{ ,! ` ( } ' (:)〉 ´(.:)`i |//ニ ! _/:::::::! ,,..ゝ! ゙! ヽ ' .゙! 7  ̄ | トy'/ _,,. -‐ヘ::::::::::::::ヽ、 r'´~`''‐、 / !、 ‐=ニ⊃ /! `ヽ" u ;-‐i´ ! \::::::::::::::ヽ `ー─ ' / ヽ ‐- / ヽ ` ̄二) /ヽト、 i、 \:::::::::::::::..、 ~" / ヽ.___,./ //ヽ、 ー
177 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 12:19:54 ] ワロた
178 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 00:24:27 ] エラーすら出ないはずじゃないのかなぁ・・・ その中途半端なエラーはなんなんだろう・・・
179 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 00:49:38 ] /bin/shをキックしたんでしょ
180 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 01:13:06 ] こんなことも分からない178に幸あれ...。
181 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 17:42:39 ] 【 課題 】テキストファイル(ttp://uproda11.2ch-library.com/src/112115.txt.shtml)に含まれる IPアドレス、時間、User-Agent、URLといったデータをそれぞれコンマで区切りファイルに出力せよ。 (URLの場合はディレクトリもコンマで区切る。) 【 補足 】テキストファイルは中国語で書かれたHTTPによるmp3ダウンロードのログファイルです。 Pythonのお勉強スレでみなさまのお力を借りながら自分で四苦八苦してコーディング しましたが、URLに含まれるエスケープ文字を処理する段階で壁にぶち当たりました。 私が途中まで書いたプログラムは(ttp://uproda11.2ch-library.com/src/112116.py.shtml) です。非常に見難く恐縮ですがどうかよろしくお願いします。
182 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 19:56:25 ] >>181 import re import urllib rexp1 = re.compile(r"[ ][-][ ][-][ ][[]|[]][ ]\"|\"[ ]\"|\"[ ]|[ ]\"|\"|[ ]") def convert(linein): record = rexp1.sub(",", linein, 9).rstrip("\"").split(",") urlpaths = record.pop(4).split("/") def decode(x): bin = urllib.unquote(x) try: return unicode(bin, "gbk") except UnicodeDecodeError: return unicode(bin, "utf-8") record += map(decode, urlpaths) out = u",".join([x.rstrip() for x in record]) + u"\n" return out.encode("utf-8") converted = (convert(x) for x in file("112115.txt", "r")) file("112115.csv", "w").writelines(converted)
183 名前:181 mailto:sage [2007/04/03(火) 11:54:15 ] すみません、下から4行目のreturn out.encode("utf-8")はdecode関数の中にあるのでしょうか・・・ インデント構造も教えていただけませんか?
184 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 11:57:03 ] 関数の中でない場所から return してどうしようというのだ
185 名前:181 mailto:sage [2007/04/03(火) 12:03:27 ] すみません、decode関数をconvert関数の内部にすると通りました。 【結果】文字化けしてしまう行が出てしまいました。 (変換後1行目は問題なく表示されているが、2行目は変換してしまった為に文字化け(澶栨枃鐢靛奖鍘熷)してしまった。) もともとのログファイルがグチャグチャに保存しているのが元凶ですが、そこをうまく分別できないものでしょうか?
186 名前:181 mailto:sage [2007/04/03(火) 12:13:17 ] 文字化けした文字列は以下の通りです。もとのエスケープ文字をunquoteすれば正常な文字列を得られるのですが、そこからunicodeで変換すると文字化けしてしまいます。 澶栨枃鐢靛奖鍘熷 姊︿腑鐨勪綘 缁忓吀鑻辨枃閲戞洸 璁稿穽 瀹岀編鐢熸椿 鏃跺厜 鍒濋洩缁濅笘鍚嶄级
187 名前:181 mailto:sage [2007/04/03(火) 15:28:16 ] ありがとうございます、自分のプログラムの無駄な部分が見えてきました。 もう一点、>>182 のプログラムではUser-Agentの後ろのダブルクォーテーションが取れませんでした。 record = rexp1.sub(",", linein, 9).rstrip("\"").split(",") のrstrip("\"")が機能していないようなのですが、私もなぜなのか分かりません。
188 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 20:13:14 ] すまん、専ブラだから空白消えるの忘れてた。 これで化けないと思うが、gbkでもutf-8でも解釈できる文字しかない部分があったら面倒だな。 import sys, re, urllib # 適当 line_re = re.compile(r'^([\d.]+) - - \[(.*?)\] "(\w+) (.*?) (.+?)" (.+?) (.+?) "(.*?)" "(.*?)"$') def convert(i, linein): try: record = list(line_re.match(linein.strip()).groups()) except AttributeError: print "parse failed at line", i + 1 sys.exit(1) url = record.pop(3).replace("/", "\n\n") def decode(x): bin = urllib.unquote(x) try: return unicode(bin, "utf-8") except UnicodeDecodeError: return unicode(bin, "gbk") record += decode(url).split(u"\n\n") out = u",".join([x.rstrip() for x in record]) + u"\n" return out.encode("utf-8") converted = (convert(i, x) for i, x in enumerate(file("112115.txt", "r"))) f = file("112115.csv.html", "w") f.write("<pre lang='zh'>") f.writelines(converted) f.write("</pre>")
189 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 23:33:46 ] 専ブラ使ってなくても 先頭の連続した空白は消えます
190 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 00:18:00 ] htmlだもん
191 名前:181 mailto:sage [2007/04/04(水) 00:41:54 ] >>188 すごい・・・文字化けが全部解消されました。 私自身プログラムも文字列処理もズブの素人のため、今からコードを参考に勉強していこうと思います。ありがとうございます。 後学のために教えていただきたいのですが、タグをつけてまで出力をhtmlにするのには何か利点があるからなのでしょうか?