您的位置:首页 > 编程语言 > Python开发

分析python处理基本数据<一>

2016-07-18 14:32 686 查看
将代码分割开来分析:

# coding=utf-8
import linecache
import time

now = time.time()  # 代码开始时间

# 前期准备,整理数据
data_keys = ('bid', 'uid', 'username', 'v_class', 'content', 'img', 'created_at', 'source', 'rt_num', 'cm_num',
'rt_uid', 'rt_username', 'rt_v_class', 'rt_content', 'rt_img', 'src_rt_num', 'src_cm_num', 'gender',
'rt_bid', 'location', 'rt_mid', 'mid', 'lat', 'lon', 'lbs_type', 'lbs_title', 'poiid', 'links', 'hashtags',
'ats', 'rt_links', 'rt_hashtags', 'rt_ats', 'v_url', 'rt_v_url')

keys = {data_keys[k]: k for k in xrange(0, len(data_keys))}

f = linecache.getlines('t.txt')

lines = [x[1:-2].split('","') for x in f]


关于import linecache

从网上查到linecache模块的作用是将文件读取到内存中,进行缓存,而不是每次都要从硬盘中读取,相比open方法快很多,是读取效率之源。

它也有他的读取文本的方式 getlines和getline

test.txt
liuhao
fighting
you can
trust you
believe in yourself
import linecache
A = linecache.getlines('test.txt')  # 打开文件返回一个列表,包含文件所有行。
B = linecache.getlines('test.txt')[0:2]  # 打开文件的0,1两行作为一个列表
C = linecache.getline('test.txt', 4)  # 打开文件的第四行,这里面4表示第几行从1开始算起
['liuhao\n', 'fighting\n', 'you can\n', 'trust you\n', 'believe in yourself\n']
['liuhao\n', 'fighting\n']
trust you


而time.time()是返回当前时间戳(1970年后的浮点秒数)

import time
print time.time()


关于xrange()和range()

xrange()是一个类,返回的是一个xrange对象,range返回的是一个列表,使用xrange遍历每次只返回一个值,range一次计算并返回所有值,因此xrange效率比range高

x = range(0, 5)
print x
y = xrange(0, 5)
print y
print y[0]
得到:
<span style="font-family: Arial, Helvetica, sans-serif;">[0, 1, 2, 3, 4]</span>
xrange(5)
0
关于他给的答案中拆分是lines = [x[1:-1].split('","') for x in f],这里面我给x[1:-1]改成了x[1:-2],因为结尾除了‘\n’还有一个”,这样保证lines中每个数据都不带引号

另外这种构造list的方法很值得学习 后面还有users = set(line[keys[username]] for line in lines),这样就构造了一个set,将set转换成list只要一步,比如

users = list(users) 这是users就从set变成了list
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: