1 读txt文件
下面代码实现的是:将一个txt文件内每行内容都存放到列表contents 中。 有一点强调,为什么要在路径前加'r' ? 其实r 的作用和\\ 的作用一样,都是为了防止程序将\ 当作是转义字符,所以r 和\\ 在写的时候使用一种方法就可以,当然如果路径是/ ,那么就不需要涉及这些了。
import operator
contents = []
filename = r"C:\Users\Lenovo\Desktop\大三上\nlp实验室\python处理\21.8.29 test.txt"
with open(filename, 'r') as f:
for line in f.readlines():
contents.append(line)
f.close()
2 批量读文件
批量读文件的核心就是学会拼凑文件名,只要掌握了这个批量读取就不是问题。 现在我的文件夹结构如下图(我要读这个大文件夹下面的所有小文件夹里的所有txt文件): 我的实现代码如下:(结合1) 注意有一个细节:encoding 最开始我选用'utf-8' 时不知道为什么不行,后来改成了下面的'ISO-8859-1' 。
import os
import operator
contents = []
path1 = r"C:\Users\Lenovo\Desktop\acl2021"
files_1 = os.listdir(path1)
for file in files_1:
path2 = path1 + "\\" + file
files_2 = os.listdir(path2)
for file2 in files_2:
pos = path2 + "\\" + file2
with open(pos, 'r', encoding='ISO-8859-1') as f:
for line in f.readlines():
contents.append(line)
f.close()
这样,我大文件夹里767个txt文件的所有内容就存到了contents 列表中,接下来就可以具体处理了。
3 个人记录
2021.9.29 抽取动词总代码
import os
import operator
import xlwt
from nltk import word_tokenize
from nltk import pos_tag
from nltk.stem import WordNetLemmatizer
contents = []
path1 = r"C:\Users\Lenovo\Desktop\acl2021"
files_1 = os.listdir(path1)
for file in files_1:
path2 = path1 + "\\" + file
files_2 = os.listdir(path2)
for file2 in files_2:
pos = path2 + "\\" + file2
with open(pos, 'r', encoding='ISO-8859-1') as f:
for line in f.readlines():
contents.append(line)
f.close()
dic = {}
wnl = WordNetLemmatizer()
for line in contents:
line = line.lower()
tokens = word_tokenize(line)
tags = pos_tag(tokens)
v_tags = {'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ'}
for word, pos in tags:
if pos in v_tags:
word = wnl.lemmatize(word, 'v')
if word not in dic:
dic[word] = 1
else:
dic[word] = dic[word] + 1
res = sorted(dic.items(), key=operator.itemgetter(1), reverse=True)
wb = xlwt.Workbook()
sh = wb.add_sheet('test')
idx = 0
for item in res:
if item[1] > 3:
sh.write(idx, 0, item[0])
sh.write(idx, 1, item[1])
idx = idx + 1
else:
break
wb.save(r"C:\Users\Lenovo\Desktop\动词筛选2.xls")
print("写入完成")
4 参考
[1] python操作txt文件中数据教程[1]-使用python读写txt文件 [2] python 批量读取文件夹中的多个TXT文件
|