python从txt中提取关键字所在行,并删除重复项后生成新的txt
时间: 2024-01-12 21:03:11 浏览: 81
可以使用Python中的set数据结构来实现该功能。以下是一个示例代码:
```python
# 定义关键字
keywords = ["apple", "banana", "orange"]
# 读取原始文本文件
with open("input.txt", "r") as f:
lines = f.readlines()
# 查找包含关键字的行
matched_lines = set()
for i, line in enumerate(lines):
if any(keyword in line for keyword in keywords):
matched_lines.add(i)
# 生成新的文本文件
with open("output.txt", "w") as f:
for i in matched_lines:
f.write(lines[i])
# 输出结果
print("提取并去重后的文本文件已生成。")
```
在这个示例中,我们首先定义了关键字列表。然后读取了原始文本文件,并使用enumerate函数获取每一行的行号和内容。接着,我们使用了一个for循环和any函数来查找包含关键字的行,并将其行号加入到一个set集合中去重。最后,我们使用了一个for循环和write函数将匹配的行写入到新的文本文件中。
需要注意的是,以上示例代码仅适用于小型文本文件。如果原始文件很大,可以考虑使用迭代器或者分块读取的方式来处理。
相关问题
python从千行的csv中提取关键字所在行,并删除重复项后生成新的CSV
可以使用Python内置的csv模块来处理csv文件,具体实现步骤如下:
1.打开原始csv文件,使用csv.reader读取所有行的数据
2.遍历每一行数据,将包含关键字的行存储到一个列表中
3.去除列表中的重复行
4.将去重后的数据写入一个新的csv文件中,使用csv.writer写入数据
以下是一个示例代码,假设原始csv文件为data.csv,关键字为keyword,新的csv文件为output.csv:
```python
import csv
# 打开原始csv文件
with open('data.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
rows = [row for row in reader if 'keyword' in row] # 找到包含关键字的行
# 去除重复行
unique_rows = list(set(tuple(row) for row in rows))
# 写入新的csv文件
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
for row in unique_rows:
writer.writerow(row)
```
需要注意的是,以上代码中的关键字是区分大小写的,如果需要忽略大小写,可以将if条件改为`'keyword' in [data.lower() for data in row]`。
阅读全文