用python遍历txt文件夹,按照关键词表提取txt文件中所有包含关键词的句子,最后将提取句子与文件名按行对应存储到xlsx中
时间: 2023-09-11 20:04:51 浏览: 269
基于Python实现的中文关键词或关键句提取工具源代码,实现了多种中文关键词提取算法,扩展性强,开箱即用
### 回答1:
可以使用Python中的os、re、pandas等模块实现。具体步骤如下:
1. 定义关键词表,以列表形式存储。
2. 遍历txt文件夹,获取所有txt文件的路径。
3. 循环读取每个txt文件,对其进行关键词提取,将包含关键词的句子存储到列表中。
4. 将每个txt文件对应的提取句子列表、文件名存储到字典中。
5. 将字典转换为DataFrame,并通过pandas库将其存储到xlsx文件中。
以下是示例代码:
```python
import os
import re
import pandas as pd
# 定义关键词列表
keywords = ['keyword1', 'keyword2', 'keyword3']
# 遍历txt文件夹,获取所有txt文件的路径
txt_folder = './txt_folder'
txt_files = [os.path.join(txt_folder, f) for f in os.listdir(txt_folder) if f.endswith('.txt')]
# 定义存储提取结果的字典
result_dict = {}
# 循环读取每个txt文件,对其进行关键词提取
for txt_file in txt_files:
with open(txt_file, 'r', encoding='utf-8') as f:
# 读取txt文件内容,并按行分割
txt_lines = f.readlines()
# 存储包含关键词的句子
matched_sentences = []
for line in txt_lines:
for keyword in keywords:
# 使用正则表达式匹配包含关键词的句子
if re.search(keyword, line):
matched_sentences.append(line.strip())
break
# 将每个txt文件对应的提取句子列表、文件名存储到字典中
result_dict[os.path.basename(txt_file)] = matched_sentences
# 将字典转换为DataFrame,并存储到xlsx文件中
result_df = pd.DataFrame.from_dict(result_dict, orient='index')
result_df.to_excel('result.xlsx', header=False)
```
其中,`os.path.join`函数可以将文件夹路径和文件名组合为完整的文件路径;`readlines`函数可以按行读取文件内容,返回一个列表;`re.search`函数可以在字符串中搜索匹配正则表达式的内容。最后通过pandas库将字典转换为DataFrame,并保存到xlsx文件中。
### 回答2:
使用Python遍历txt文件夹,并按照关键词表提取txt文件中所有包含关键词的句子,并将提取句子与文件名按行对应存储到xlsx文件中,可以按照以下步骤进行:
1. 导入所需的Python库,如`os`、`xlwt`和`xlrd`等。
```python
import os
import xlwt
import xlrd
```
2. 定义一个函数,用于提取包含关键词的句子,并返回句子列表。
```python
def extract_sentences(file_path, keywords):
sentences = []
with open(file_path, 'r', encoding='utf-8') as file:
for line in file:
for keyword in keywords:
if keyword in line:
sentences.append(line.strip())
break
return sentences
```
3. 定义一个函数,用于遍历txt文件夹,提取句子,并将提取结果和文件名存储到xlsx文件中。
```python
def traverse_folder(folder_path, keyword_list):
workbook = xlwt.Workbook()
sheet = workbook.add_sheet('Sentences')
row = 0
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith('.txt'):
file_path = os.path.join(root, file)
sentences = extract_sentences(file_path, keyword_list)
if sentences:
sheet.write(row, 0, file)
for i, sentence in enumerate(sentences):
sheet.write(row + i, 1, sentence)
row += len(sentences) + 1
workbook.save('sentences.xlsx')
```
4. 指定txt文件夹路径和关键词列表,调用`traverse_folder`函数进行遍历和提取操作。
```python
folder_path = '/path/to/txt/folder'
keyword_list = ['keyword1', 'keyword2', 'keyword3']
traverse_folder(folder_path, keyword_list)
```
以上代码将会遍历指定的txt文件夹,并将包含关键词的句子及其对应的文件名按行存储到名为`sentences.xlsx`的xlsx文件中。
### 回答3:
使用Python遍历txt文件夹并提取包含关键词的句子,最后将提取的句子与文件名按行对应存储到xlsx文件中的步骤如下:
1. 导入所需的库,如os、glob、xlwt和xlrd。
2. 创建一个函数,接受txt文件的路径和关键词表作为参数。
3. 在函数中,首先创建一个空的句子列表和文件名列表。使用glob模块遍历指定路径下的所有txt文件。
4. 循环遍历每个txt文件,打开并逐行读取文件内容。
5. 对于每一行文本,使用关键词表进行匹配,如果匹配成功,则将该句子添加到句子列表中,并将文件名添加到文件名列表中。
6. 读取完所有txt文件后,将句子列表和文件名列表分别写入xlsx文件中的两个不同的列。
7. 最后保存并关闭xlsx文件,完成操作。
下面是一个示例代码:
```python
import os
import glob
import xlwt
import xlrd
def extract_sentences_from_folder(folder_path, keyword_list):
sentences = []
filenames = []
files = glob.glob(os.path.join(folder_path, '*.txt'))
for file in files:
with open(file, 'r') as f:
lines = f.readlines()
for line in lines:
for keyword in keyword_list:
if keyword in line:
sentences.append(line.strip())
filenames.append(os.path.basename(file))
break
workbook = xlwt.Workbook()
sheet = workbook.add_sheet('Extracted Sentences')
for i in range(len(sentences)):
sheet.write(i, 0, filenames[i])
sheet.write(i, 1, sentences[i])
workbook.save('extracted_sentences.xlsx')
# 调用示例
folder_path = 'txt_files_folder'
keyword_list = ['关键词1', '关键词2', '关键词3']
extract_sentences_from_folder(folder_path, keyword_list)
```
以上代码中,需要将`txt_files_folder`替换为待遍历的txt文件夹路径,`['关键词1', '关键词2', '关键词3']`替换为你的关键词表。
执行后,代码将遍历指定文件夹中的所有txt文件,并将包含关键词的句子与对应的文件名按行写入名为`extracted_sentences.xlsx`的xlsx文件中。
阅读全文