python计算关键字长度

有时候我们会根据关键字长度对关键字进行分类,分享下使用python的实现方式:

1.主要使用python的len()函数计算每个字符的字节数,由于中文一个字为3个字节(utf-8编码下),英文为1个字节,所以这里的处理需要区别对待,我想到的办法是分别处理两种状态,使用正则表达式的\w和\W来提取中英文。

2.排序,计算好每个关键字长度后,需要对其进行排序,这里使用了字典排序功能,关键字做key,关键字长度做value(需要注意的是不可以使用关键字长度做key,因为很多关键字长度是相同的,那么必然会被替换掉,这不是我们想要的,且关键字长度添加到字典里面去的时候必须是int(),否则排序时候不会当作数值处理)。

 Python |  copy code |? 
01
#coding:utf-8
02
#计算关键字长度并排序
03
#2014年4月11日 23:41:58
04
#by M.Shan
05
#需处理数据格式:关键字,URL
06
import re,csv
07
key=csv.reader(file('uz.csv','rb'))
08
key1=open('uz1.csv','w')
09
zidian={}
10
lists=[]
11
 
12
for line in key:
13
	reges=re.compile(r'\w',re.M)
14
	E=reges.findall(line[0])   #获取数字和英文
15
 
16
	reges1=re.compile(r'\W',re.M)
17
	C=reges1.findall(line[0])  #获取到中文
18
 
19
	English= len(E)  #获取英文长度
20
	China=len(C)/3   #获取中文长度,中文一个汉字3个字节,除以3得到汉字个数
21
	length=line[0]+','+line[1]+','+`English+China`
22
	lists.append(length)
23
 
24
for ls in lists:
25
	ls=ls.split(',')
26
	ls_value=int(ls[2])      #这一步必须转成int,否则下面的字典排序的时候不会当作数值处理,而是当作字符来处理,导致排序错误
27
	ls_key=ls[0]+','+ls[1]
28
	zidian1={ls_key:ls_value}
29
	zidian.update(zidian1)
30
 
31
cc=sorted(zidian.items(), key=lambda d:d[1], reverse=True )   #字典排序之降序,针对字典value排序(d:d[1]), reverse=true为降序
32
 
33
for key in cc:    #keys()字典的键值
34
	key1.writelines(key[0]+","+`key[1]`+"\n" )   #文件写入key1
35
	print key[0]+","+`key[1]`    #分别输出里面的数
36
 
37
key1.close()

处理后截图:

111 python计算关键字长度