Python の宿題ここで答えます Part 1
■ このスレッドは過去ログ倉庫に格納されています
0188デフォルトの名無しさん
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>")
■ このスレッドは過去ログ倉庫に格納されています