用python筛选英文txt中的单词,生僻单词
发布时间
阅读量:
阅读量
前言
本人业余,小白一枚,多多包涵,最近需要看大量英文文献,遇到很多生词,想要筛选出生词进行集中查询翻译,做个生词表。论文pdf大多数是分双栏的,而且pdf匹配较不精准,目前找到的pdf转txt方案效果都不理想,所以需要自行复制做好txt文件,由于需要筛选的是生词,那么就需要制作个人的熟词txt,最后通过对比选出生词。
正文
# _*_ coding:utf-8 _*_
#用于将txt文本的英文,根据词库提取生词
import re
import string
#将文本转换为列表
def Changetxt(input_path):
r = open(input_path,"r",encoding='UTF-8') #输入文本
strs =r.read()
s = re.findall("\w+",str.lower(strs)) #使用正则提取单词来,修改为小写
l = list(set(s)) #去除列表中的重复项
l.sort(key = s.index) #set会乱序,使用sort保持原来的顺序
r.close()
return l
#给定词库txt去掉n\
def Remove_mark(words_path):
f = open(words_path,encoding = "utf-8")
a = list(f)
for i in range(len(a)):
a[i] = a[i].rstrip("\n")
f.close()
return a
#匹配列表new_paper_word里的单词是否在词库words里面出现,最后将筛选的生词提取到txt中
def Handle_data(output_path,new_paper_word,words):
num = 0 #用于记录本次匹配的生词数
f = open(output_path,"w",encoding='UTF-8') #用于记录筛选的生词
for i in new_paper_word:
m = re.search("\d+",i)
n = re.search("\W+",i)
if not m and not n and len(i)>2: #不是数字,不是符号,且长度大于2,就写到txt里面
if i not in words: #不是词库里的词
f.write(i +"\n")
num += 1
print('筛选成功,本次共成功筛选了' + str(num) + '个生词')
words_path = r'F:\ pythontest\ ww\ finish\ words.txt' #单词表路径(个人词库)
input_path = r'F:\ pythontest\ ww\ finish\ input.txt' #用于筛选生词的txt路径,txt里应该是能够正常阅读的英文
output_path = r'F:\ pythontest\ ww\ finish\ output.txt' #筛选出的生词
new_paper_word = Changetxt(input_path) #获取论文单词list
words = Remove_mark(words_path) #获取词库单词list
Handle_data(output_path,new_paper_word,words) #数据匹配处理,最终赛选出结果
AI写代码

下面是四个文件
words用于存放认识的单词
input为需要筛选的英文文献
output为运行后输出的结果

全部评论 (0)
还没有任何评论哟~
