[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 23:01 / Filesize : 195 KB / Number-of Response : 712
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Python の宿題ここで答えます Part 1



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


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にするのには何か利点があるからなのでしょうか?

192 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 00:45:07 ]
ふふふ、良いところに気がつきましたね

193 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 00:50:58 ]
ふふふ
ふふふふふふ
ふふふふふふふふふふふふふふふふふふふ
ふふふふふふふふふふふふふふふふふふふふふふふふふふふふふふふふふ

194 名前:181 mailto:sage [2007/04/04(水) 02:27:44 ]
>>188
正規表現を「分割場所でコンマに変換(sub)する」のではなく、「データ自身をマッチさせてリストにする」に変えたんですね。
正規表現の部分は自分も自分のプログラムの中で一番美しくないと思っていたのでとても参考になりました。

ですがその次の
url = record.pop(3).replace("/", "\n\n")
の部分からが理解できません。
URLをディレクトリごとに二回の改行を入れるとdecode関数に値を渡す際に何か変化があるのでしょうか?
>>182のプログラムでunquote後のtryの中のgbkとutf-8を逆にすると>>188と同じ結果が得られるようなのですが・・・?

enumerate関数を使ったエラー箇所の表示も大変興味深いです。多謝多謝。

もう一つ>>182のプログラムから気になってはいたのですが、
converted = (convert(i, x) for i, x in enumerate(file("112115.txt", "r")))
といったforの特殊な使い方について解説されているサイトを教えていただけないでしょうか?
「はじめてのPython」やドキュメントを漁ってみたのですがどうもそれらしい記述が無いようなのです。



195 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 02:37:11 ]
漁ってないに3000ペリカ

196 名前:181 mailto:sage [2007/04/04(水) 02:40:20 ]
>>195
orz
もう一度漁ってきますッ

197 名前:181 mailto:sage [2007/04/04(水) 03:24:20 ]
漁れました。orz
ttp://docs.python.org/tut/node7.html#SECTION007140000000000000000

しかし入力するログファイルがあまりにも膨大だった場合、メモリの容量によっては>>188のconvertedに入りきらない可能性もあるのでは。それは杞憂なのでしょうか?

198 名前:181 mailto:sage [2007/04/04(水) 04:22:39 ]
>>188で二回改行を入れてからunquoteする理由は、unquoteによって"/"がデコードされる可能性があるからですか?
各ディレクトリに分割する際、本来ディレクトリ名の一部であるはずの"/"でぶった切ってしまうのを二回改行で回避している、と理解すればよいのでしょうか。


なるほど

そろそろ寝ます。みなさんお忙しい中付き合っていただきありがとうございます。本当に有意義な一日でした。

199 名前:182=188 mailto:sage [2007/04/04(水) 10:39:30 ]
>タグをつけてまで出力をhtml
単にブラウザで表示確認してただけ。俺が使ってるのはSJISエディタだから。

>url = record.pop(3).replace("/", "\n\n")
>二回改行を入れてからunquoteする理由は、unquoteによって"/"がデコードされる可能性が
そう。分割しないでデコードするのは、一度にデコードする量を増やして
エラーを出しやすくする(正しくないデコードをされる可能性を減らす)ため。
まあ予防的措置。完璧じゃないが、完璧にやるのは手間に見合わないので。

>unquote後のtryの中のgbkとutf-8を逆にすると>>188と同じ結果
>>182で化けたのは、utf-8でデコードすべきところをgbkでデコードしてエラーが出なかったから。
だから試す順を逆にした。他は前述の通り。

>converted = (convert(i, x) for i, x in enumerate(file("112115.txt", "r")))
これはリストの内包表記ではなくて、ジェネレータ式。
www.python.jp/doc/release/tut/node11.html#SECTION00111000000000000000000
ジェネレータだから、convertedの時点ではまだfileは読まれていない。
enumerateもイテレータに対応しているから、writelinesがconverted.next()した時点で
readlineされ、convertされ、writeされる。メモリは一行分あればよい。
ジェネレータ関数の方が解りやすかったとは思うけど、行数が勿体無かったので。

200 名前:デフォルトの名無しさん [2007/04/07(土) 20:49:24 ]
良い生徒&酔い先生age

201 名前:181 mailto:sage [2007/04/08(日) 03:27:22 ]
すみません、教授から新しい任務を与えられてしまい、やはりエンコードで躓いています・・・
テンプレにあるように丸投げ、ということではなくなってしまうのですが

【 課題 】gzipでそれぞれ圧縮された4つのログファイルに含まれるURLを読み込み、
      ディレクトリの種類毎にそれぞれナンバリングして対応表のファイル及び
      そのナンバーが記載されたログファイルを出力せよ。
      4つのログファイルのうちの一つは(ttp://uproda11.2ch-library.com/src/112376.gz.shtml)

【 補足 】>>181のログファイルはこの圧縮されたログファイルの一部です。
      (このログファイルは展開すると一つが75Mほどになります。)
      URLの頭は全て「music」になっているので無視し、
      その下の「Songs」を「1」、「Musics」を「2」とします。
      さらにその下の階層では「Chinese」、「English」となっているので、
      「/Songs/Chinese」が「11」、
      「/Songs/English」が「12」
      ・・・という風になります。
      URLが「/Songs」から開始する(つまり一桁目が「1」になる)ファイルを
      時間順に上記のナンバーに変換し、新たなログファイルとして出力します。
      
      またこのログファイルとは他に、ディレクトリ名及びファイル名の対応表
      (Songs:1、Chinese:1、English:2)を出力します。

202 名前:181 mailto:sage [2007/04/08(日) 03:39:07 ]
【 試した事1 】まず>>188のプログラムのファイル入力の部分を今回のログファイルに置き換えて実行。

【  結果   】UnicodeDecodeErrorが発生。

【 試した事2 】1585行目から文字化けを確認。decode関数内部における例外処理を以下のように変更して実行。
try:
return unicode(bin,"gb18030")
except UnicodeDecodeError:
try:
return unicode(bin,"utf-8")
except UnicodeDecodeError:
return unicode(bin,"gbk")

【  結果   】20677行目で正規表現とマッチせず終了。
         "GET (URL) (Protocol)"の形ではなく"-"となっていることを確認。
         1585行目からの文字化けも解消されず。

203 名前:181 mailto:sage [2007/04/08(日) 03:54:44 ]
【 言い訳 】前回に引き続き無理難題を持ち込んでしまい、本当に頭が上がりません・・・
       あまりにもログファイルがデタラメ(エンコードが統一しておらずサーバのディレクトリ構造も不明)
       なので教授に取り次いでもらって、このログファイルを出力したプログラムを書いた中国人と喧嘩してきます。

       素人目にもこのログファイルの解析は非効率であると思いますので、

       1.ログファイルのエンコードの統一について
       2.ディレクトリ構造
       3.ログファイルの仕様

       をそれぞれ聞いてこようと思います。プログラムを組む上でそれ以外に必要な項目があれば教えていただけますか?

204 名前:181 mailto:sage [2007/04/08(日) 04:01:36 ]
すみません、アップロードに失敗しているようです・・・もう一度してきます・・・



205 名前:181 mailto:sage [2007/04/08(日) 04:34:55 ]
4つのログファイルです。
ttp://skeeterhawk.googlepages.com/access_log.1.gz
ttp://skeeterhawk.googlepages.com/access_log.2.gz
ttp://skeeterhawk.googlepages.com/access_log.3.gz
ttp://skeeterhawk.googlepages.com/access_log.4.gz

206 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 05:38:59 ]
pythonで宿題を出すような阿呆な教育機関って日本にあるの?

207 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 07:35:47 ]
perlよりはいいんじゃね?

208 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 09:36:21 ]
Rubyの学習が囚人の苦役になる時代だからなぁ

209 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 12:38:32 ]
>206
むしろ大学とかは妙に使用率の低い言語好むから
Pythonくらいならまだマシなほうでわ

210 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 12:39:53 ]
素人囚人の人たちの作ったスクリプトは使い物にならないんだろうなぁ。w

211 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:13:36 ]
刑務所には娯楽もあまり無いだろうしむしろ上達するかも

212 名前:デフォルトの名無しさん [2007/05/03(木) 13:48:10 ]
レイパー、人殺しやコソ泥が使う言語Ruby.

213 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:59:39 ]
出所後の就職対策でもあるらしいが、刑期が長いと出所する頃には廃れてたりしないだろうか

214 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:34:22 ]
Rubyをちょっといじっただけの前科持ちを雇うとか信じられないな



215 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:49:46 ]
中で開発するんじゃなかったっけ?
何をかはしらんが・・・

216 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:52:21 ]
Perlはアニオタやオカマが作ってる言語。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<195KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef