当前位置:   article > 正文

实验5-文件及其操作_实验五 文件操作

实验五 文件操作
  1. import jieba
  2. import wordcloud
  3. import imageio
  4. def Wordcloud(word,outFile,pic):
  5. maskImage=imageio.v2.imread(pic)
  6. wc=wordcloud.WordCloud(font_path='simhei.ttf',mask=maskImage,background_color='red')
  7. wc.generate(' '.join(word))
  8. wc.to_file(outFile)
  9. def readwords(file,stop=''):
  10. if stop=='':
  11. sp=[]
  12. else:
  13. sp=stopwords(stop)
  14. with open(file,'r',encoding='UTF-8')as f:
  15. x=f.read()#是str
  16. words=[]
  17. for w in jieba.lcut(x):
  18. w=w.strip()
  19. if not w:
  20. continue
  21. if w in sp:
  22. continue
  23. words.append(w)
  24. return words
  25. def stopwords(file):
  26. sp=[line.strip() for line in open(file,'r',encoding='UTF-8').readlines()]
  27. print(sp)
  28. return sp
  29. def main():
  30. ws=readwords('二十大报告全文.txt','stops.txt')
  31. pic="123.bmp"
  32. Wordcloud(ws,'imageoutFile.png',pic)
  33. if __name__=='__main__':
  34. main()

词云图代码,如上,要使用该代码请注意:

 文章位置,若与代码文件地址不同请r+‘完整地址

’图片位置

需要更换背景颜色请看wordcould函数内该行代码,如下:

 请自行改动需调用的内容

  1. def garde(file):
  2. with open(file,'r',encoding='UTF-8')as fp:
  3. Ft=fp.readline()
  4. Ft=Ft.split()
  5. ls=[]
  6. for line in fp.readlines():
  7. lin=line.split()
  8. student={}
  9. cj={}
  10. for i in range(len(lin)):
  11. if i<2:
  12. student.update({Ft[i]:lin[i]})
  13. else:
  14. cj.update({Ft[i]:lin[i]})
  15. student.update({'成绩':cj})
  16. ls.append(student)
  17. return ls
  18. def 学分(file):
  19. with open(file,'r',encoding='cp936')as fp:
  20. dic={}
  21. for line in fp.readlines():
  22. line=line.replace('\n','')
  23. line=line.split(',')
  24. dic.update({line[0]:line[1]})
  25. return dic
  26. def 算分(fenshu,xuefen):
  27. 课程学分=eval(xuefen)
  28. 课程分数=eval(fenshu)
  29. if 课程分数<60:
  30. 课程绩点=0
  31. else:
  32. 课程绩点=课程分数/10-5
  33. 学分绩点=课程绩点*课程学分
  34. return 学分绩点
  35. def GPA(xuefenjidianbiao,xuefenhe):
  36. GPA=[]
  37. for i in xuefenjidianbiao:
  38. x=0
  39. for j in i:
  40. x+=j
  41. gpa=x/xuefenhe
  42. GPA.append(round(gpa,2))
  43. return GPA
  44. def 学分绩点():
  45. y=[]
  46. ls=garde('scores.txt')
  47. for c in ls:
  48. x=[]
  49. cj=c['成绩']
  50. cj=list(cj.values())
  51. xuefen=学分('courses.csv')
  52. xuefen=list(xuefen.values())
  53. xuefen=xuefen[1:]
  54. for i in range(len(cj)):
  55. x.append(round(算分(cj[i],xuefen[i]),2))
  56. y.append(x)
  57. return y
  58. def main():
  59. ls=garde('scores.txt')
  60. xuefen=list(学分('courses.csv').values())
  61. xuefen=xuefen[1:]
  62. xuefenhe=sum(map(int,xuefen))
  63. xj=学分绩点()
  64. y=GPA(xj,xuefenhe)
  65. pGPA=round(sum(y)/len(y),2)
  66. for i in range(len(ls)):
  67. ls[i].update({'GPA':y[i]})
  68. ls.sort(key=lambda x:x['GPA'],reverse=True)
  69. return ls[0]['姓名'],ls[-1]['姓名'],pGPA
  70. if '__main__'==__name__:
  71. print(main())

GPA代码,如上,更改该代码请注意:函数间调用关系。

此为拙作还请谅解

  1. def readFile(file):
  2. '''此函数用于读取文本文件内容
  3. para:file,指定读取文件
  4. return:list,读取的数据可以格式化表示为list/dict返回'''
  5. with open(file,'r',encoding='UTF-8')as f:
  6. dic={}
  7. for line in f.readlines()[1:]:
  8. line=line.split()
  9. dic[line[0]]=line[1]
  10. return dic
  11. def mergeData(edata, tdata):
  12. '''此函数用于合并email和telephone信息,以人名为关键词进行合并,没有可以为空
  13. para:edata,待合并的email数据
  14. para:tdata,待合并的telephone数据
  15. return:list,读取的数据格式化表示为list返回'''
  16. e=set(edata.keys())
  17. t=set(tdata.keys())
  18. s=e|t
  19. ls=list(s)
  20. print(ls)
  21. print(type(tdata))
  22. tp2=()
  23. ls3=[]
  24. for i in range(len(ls)):
  25. if ls[i] not in edata:
  26. edata[ls[i]]=' '
  27. if ls[i] not in tdata:
  28. tdata[ls[i]]=' '
  29. ls3.append((ls[i],edata[ls[i]],tdata[ls[i]],'\n'))
  30. print(ls3)
  31. return ls3
  32. def writeFile(data, file):
  33. '''此函数用于将合并后的联系方式写入文件
  34. para:data,写入数据,遍历逐行写入文件
  35. para:file,指定写入文件
  36. return:写文件操作无需设置返回值'''
  37. with open(file,'w',encoding='UTF-8')as f:
  38. for i in data:
  39. f.writelines(i)
  40. def main():
  41. emaildata = readFile('emailBook.txt')
  42. teldata = readFile('telBook.txt')
  43. mdata = mergeData(emaildata, teldata)
  44. writeFile(mdata, 'contectBook.txt')
  45. if __name__=='__main__':
  46. print(main())

此为合并内容代码,如上

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号