## 把所有文档中的元素载入一个列表,行数据为一个元素
import re
def txt_reading1(txt): # txt为带读取文件地址
with open(txt,'r') as f:
line = f.readlines() # 完成列表载入,但是每个项后会存在 '\n'
g=len(line)
h=[]
for i in range(g):
j=line[i]
j=j.strip()
h.append(j) # 完成所有元素末尾 '\n' 的消除
return h
stageandsorce=txt_reading1('/Users/LAAAAA~/Desktop/Python程序/filmstage.txt') #读取并拆分sorce与stage
lenstageandsorce=len(stageandsorce)
stage=[]
sorce=[]
for a in range(1,lenstageandsorce,2):
stage.append(stageandsorce[a-1])
sorce.append(stageandsorce[a])
def text_save(filename, data):#filename为写入文件路径,data为要写入数据列表.
file = open(filename,'a')
for i in range(len(data)):
s = str(data[i]).replace('[','').replace(']','')#去除[],这两行按数据不同,可以选择
s = s.replace("'",'').replace(',','') +'\n' #去除单引号,逗号,每行末尾追加换行符
file.write(s)
file.close()
print("保存文件成功")
############################# 完成stage种类计算
ff=[]
stage1=[]
for a in range(int(lenstageandsorce/2)):
ff=stage[a]
try:
ff=ff.split(' ')
stage1.extend(ff)
except:
stage1.extend(ff)
assd1=[]
bb=len(stage1)
while True:
try :
assd=stage1[0]
assd1.append(assd)
for b in range(bb-1,-1,-1):
if stage1[b] == assd :
stage1.pop(b)
bb=len(stage1)
except :
break
############################# 完成stage种类计算
d={}
for a in range(len(assd1)): #建立所有可选项项字典
d[assd1[a]]=0
for a in range(int(lenstageandsorce/2)): #完成数据统计
ff=stage[a]
try :
ff=ff.split(' ')
for hhhh in range(len(ff)):
d[ff[hhhh]]=d[ff[hhhh]]+0.5-float(sorce[a])
except:
d[ff[0]]=d[ff[0]]+0.5-float(sorce[a])
totalsorce=0
maxsorce=0
maxname=''
for key in d.keys():
totalsorce=totalsorce+d[key]
if maxsorce <= d[key] :
maxsorce=d[key]
maxname=key
baifenbi=maxsorce/totalsorce
aaaaaaaaa=['总共统计项:',len(sorce),'最喜欢的类型为:',maxname,'对其评分为:',maxsorce,'占总分的:',baifenbi]
print(aaaaaaaaa)
text_save('/Users/LAAAAA~/Desktop/Python程序/shujuchuli.txt',aaaaaaaaa)
这条处理程序,主要是根据之前爬虫的存档结果设计,程序中有很大一段是为了把数据处理成所需要个格式。数据结果主要是通过基础统计的方法完成。同时为了事数据能更加真实的还原用户想法,这里为每一个用户信息进行加权处理。同时由于豆瓣网的个人评分系统是以星数进行结算,所以在去之上向上放宽0.5分左右,但同时把这一问题加权到最后的处理结果当中,统计得到最终结果。