python怎么根据当前文件夹下含有多个关键词的txt文本,直接遍历当前文件夹下的全部文本文件和excel文件,然后把匹配到的所在行内容输出到新的文本里面,新匹配出来的文本根据原文件名称加上1重命名
时间: 2024-02-05 10:14:25 浏览: 69
可以使用Python中的os和re模块来实现这个功能。具体步骤如下:
1. 使用os模块遍历当前文件夹下的所有文件,判断其是否为文本文件或excel文件,如果是则打开文件。
2. 对于文本文件,使用Python中的re模块来查找是否包含关键词,找到则将该行内容写入新的文本文件中。
3. 对于excel文件,使用Python中的pandas模块读取excel文件,并使用re模块查找是否包含关键词,找到则将该行内容写入新的文本文件中。
4. 最后将新的文本文件根据原文件名称加上1重命名。
下面是代码示例:
```python
import os
import re
import pandas as pd
# 关键词列表
keywords = ['keyword1', 'keyword2', 'keyword3']
# 遍历当前文件夹下的所有文件
for filename in os.listdir('.'):
# 判断是否为文本文件或excel文件
if filename.endswith('.txt'):
with open(filename, 'r', encoding='utf-8') as f:
# 遍历文本文件的每一行
for line in f:
# 查找是否包含关键词
if any(keyword in line for keyword in keywords):
# 将匹配到的行内容写入新的文本文件中
with open(f'{filename}_match.txt', 'a', encoding='utf-8') as new_file:
new_file.write(line)
elif filename.endswith('.xlsx'):
# 读取excel文件
df = pd.read_excel(filename)
# 遍历excel文件的每一行
for i, row in df.iterrows():
# 将一行转换为字符串
row_str = ' '.join([str(cell) for cell in row])
# 查找是否包含关键词
if any(keyword in row_str for keyword in keywords):
# 将匹配到的行内容写入新的文本文件中
with open(f'{filename}_match.txt', 'a', encoding='utf-8') as new_file:
new_file.write(row_str + '\n')
else:
continue
# 对新的文本文件重命名
os.rename(f'{filename}_match.txt', f'{filename}_match1.txt')
```
在这个示例中,我们使用了Python中的os模块来遍历当前文件夹下的所有文件,并使用了re模块来查找是否包含关键词。如果匹配到了关键词,就将该行内容写入新的文本文件中。对于excel文件,我们使用了pandas模块来读取文件,并将一行转换为字符串来进行查找。最后,我们使用os模块来对新的文本文件进行重命名。
阅读全文