前言
今天要需要统计10w个query的页面构成,由于输入文件格式不标准,url编码不统一等各种问题,整个统计过程相当纠结…下面将其中的一些点记录下来,供以后参考
异常文件处理
删除文件最后的异常行:
1
| for file in `ls`; do line=`tail -1 $file`; if [ "$line" != "}," ]; then sed -i '$d' $file;fi;done
|
删除目录下的空文件:
1
| find -maxdepth 1 -type f -empty -print0 | xargs -0 rm -f
|
python处理url
从url中获取domain name:
1 2 3 4 5 6
|
from urlparse import urlparse, parse_qs
def get_domain_from_url(url): return '{uri.scheme}://{uri.netloc}'.format(uri=urlparse(url))
|
从url中获取参数,如本例中的wd字段,其中对编码的处理还不够完善,需继续改进~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
from urlparse import urlparse, parse_qs
def get_query_from_url(url): try: query_url = urllib.unquote(url).decode('utf8') except UnicodeDecodeError: try: query_url = urllib.unquote(url).decode('gbk') except UnicodeDecodeError: return "Unkown Encoding" try: wd = parse_qs(urlparse(query_url).query)['wd'][0].encode('utf8') except KeyError: wd = "Unkown Key" return wd
|
其他技巧
python计算平均数:
1 2
| def average(values): return float('%.2f' % (sum(values, 0.0) / len(values)))
|
python找出list中重复的值:
1 2
| def find_dup_value_from_list(inlist): return [x for x, y in collections.Counter(inlist).items() if y > 1]
|
python匹配出日志中key=value类型的值:
1 2 3
| def find_value_from_string(string, key): regex = '\s*' + key + '=(\w+)\s*' return re.findall(regex, string)
|
总结
python的数据结构还需要系统的看下,不然好多基础问题还得Goolge..太影响效率了。囧o(╯□╰)o..
嗯,准备系统的看下官方文档:http://docs.python.org/2/tutorial/index.html.嗯,之前喵大说要看的...喵的,还没看完!最近抽时间看完!