可以打包送给身边的英语老师了!
import codecs
import re
import os
import csv
#读入txt格式
print("请输入文件地址:中间使用/,例如:[C:/Users/Dell/Desktop/w.txt]")
file = input()
#文件名和地址分开
filepath,filename = os.path.split(file)
with open(file, 'r') as fd:
data = fd.read()
# 替换函数:用空格替换掉所有非字母
fnosign = re.sub(r"[^A-Za-z]", " ", data)
#拆分成列表
flist = fnosign.split(" ")
# list格式去除多余的空项
while '' in flist:
flist.remove('')
#生成字典
fnode = []
for i in flist:
if i not in fnode:
fnode.append(i)
#生成带有频数的字典
f_node = {}
f_node.fromkeys(fnode)
for j in fnode:
f_node[j] = flist.count(j)
name = "Frequency.csv"
file2 = os.path.join(filepath,name) #路径拼接
#将数据写入csv文件
with codecs.open(file2, "w", "gbk") as f:
csv_writer = csv.writer(f)
csv_writer.writerow(["word", "times"])
for name, times in f_node.items():
csv_writer.writerow([name,str(times)])
python打包
我用的是anaconda,
安装pipenv,
conda intall pipenv
进入虚拟环境pipenv shell
(这个方法打包得到的exe会比较小)
cd 到自己保存程序的位置
打包pyinstaller -F xx.py
打包后位置:我的是aa.py,打包后为aa.exe
最终得到的英语单词次数表会保存在和英语原文相同的文件夹内。
用到的函数:
1、将文件用os.path.split方法拆分为路径和文件名
2、将路径和文件名用os.path.join合并
3、替换函数re.sub
re.sub(r'[0-9]', '*', s) 表示将每一个数字替换为一个星号 。
re.sub(r'[a-z]', '*', s) 表示将每一个小写字母替换为一个星号 。
re.sub(r'[A-Z]', '*', s) 表示将每一个大写字母替换为一个星号 。
re.sub(r'[A-Za-z]', '*', s) 表示将每一个字母替换为一个星号 。
re.sub(r'[0-9A-Z]', '*', s) 表示将每一个数字和大写字母替换为一个星号 。
re.sub(r'[0-9]+', '*', s) 表示将多个连续的数字替换为一个星号 。
re.sub(r'[A-Za-z]+', '*', s) 表示将多个连续的字母替换为一个星号 。
re.sub(r'[0-9A-Za-z]+', '*', s) 表示将多个连续的数字、连续的字母、连续的数字和字母替换为一个星号 。
re.sub(r'[^0-9]', '*', s) 表示将单个非数字替换为一个星号 。
r.sub(r'[^0-9]+', '*', s) 表示将多个连续的非数字替换为一个星号
re.sub(r'[^A-Za-z]', '*', s) 表示将单个非字母替换为一个星号 。
re.sub(r'[^0-9A-Za-z]+', '*', s) 表示将数字和非字母替换为一个星号。
4、csv.writer写入csv