python从txt中提取关键字所在行,并删除重复项后生成新的txt
时间: 2024-01-12 14:03:11 浏览: 32
可以使用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]`。
python读取txt 并提取表中关键字所在行保存为excel
### 回答1:
Python读取txt文件并提取表中关键字所在行保存为Excel的方法如下:
首先,我们需要安装openpyxl库来操作Excel文件,可以使用以下命令在Python环境中安装openpyxl库:
```python
pip install openpyxl
```
接下来,我们可以使用以下代码来读取txt文件并提取表中包含关键字的行保存为Excel:
```python
import openpyxl
# 打开txt文件
with open('file.txt', 'r', encoding='utf-8') as file:
# 读取txt文件的所有行
lines = file.readlines()
# 创建一个新的Excel工作簿
workbook = openpyxl.Workbook()
# 选择第一个工作表
worksheet = workbook.active
# 遍历每一行
for line_index, line in enumerate(lines):
# 判断关键字是否在该行中
if '关键字' in line:
# 提取包含关键字的行并保存到Excel中
worksheet.append(line.split('\t')) # 如果行中的数据是通过制表符进行分隔的,可以使用split('\t')进行分割,如数据是通过其他方式分隔的,请替换分隔符
# 保存Excel文件
workbook.save('output.xlsx')
```
在上述代码中,我们通过`open()`函数打开txt文件并使用`readlines()`方法读取所有行。然后,我们使用openpyxl库创建一个新的Excel工作簿和工作表。接下来,我们遍历每一行并判断关键字是否在该行中。如果关键字存在于该行中,我们将使用`append()`方法将该行数据添加到Excel工作表中。最后,我们使用`save()`方法保存Excel文件。
请将代码中的`file.txt`替换为你要读取的txt文件的路径,将`关键字`替换为你要提取的关键字,将`output.xlsx`替换为保存的Excel文件名。
### 回答2:
我们可以使用Python的pandas库来实现这个功能。首先,我们需要读取txt文件并将其存储为dataframe对象。接下来,我们可以使用pandas的过滤功能来提取包含关键字的行。最后,我们可以将结果保存为excel文件。
以下是实现上述功能的代码示例:
```python
import pandas as pd
# 读取txt文件并将其保存为dataframe对象
df = pd.read_csv('input.txt', sep='\t', header=None)
# 提取包含关键字的行
keyword = '关键字'
filtered_df = df[df.apply(lambda row: keyword in row.to_string(), axis=1)]
# 将结果保存为excel文件
filtered_df.to_excel('output.xlsx', index=False, header=False)
```
在上述代码中,`input.txt`是要读取的txt文件路径。你需要将其替换为你自己的文件路径。`关键字`是你要提取的关键字,你也可以根据需要进行替换。最后,`output.xlsx`是保存提取结果的excel文件路径。你可以根据自己的需求进行更改。
请确保在运行代码之前已经安装了pandas库。你可以使用以下命令来安装pandas:
```
pip install pandas
```
希望对你有所帮助!
### 回答3:
使用Python读取txt文件并提取表中关键字所在行保存为Excel,可以按照以下步骤操作:
1. 导入所需模块:首先需要导入openpyxl、xlwt和codecs等模块,openpyxl用于创建和写入Excel文件,xlwt用于保存Excel文件,codecs用于读取txt文件。
2. 打开txt文件:使用codecs模块中的open()函数打开待提取的txt文件,指定文件名和读取模式。
3. 创建Excel文件:使用openpyxl模块创建一个新的Excel文件,可以使用Workbook()函数创建空白的Excel工作簿。
4. 创建Excel表格并写入数据:使用openpyxl模块中的create_sheet()函数创建一个新的工作表,并使用append()函数将关键字所在行的数据写入到工作表中。
5. 保存Excel文件:使用xlwt模块的save()函数保存修改后的Excel文件,指定文件名和保存路径。
下面是一个简单的示例代码:
```python
import codecs
from openpyxl import Workbook
import xlwt
# 打开txt文件
with codecs.open('data.txt', 'r', encoding='utf-8') as file:
lines = file.readlines()
# 创建Excel文件
wb = Workbook()
# 创建Excel表格并写入数据
sheet = wb.create_sheet(title='Sheet1')
for line in lines:
if '关键字' in line: # 根据关键字提取所在行
data = line.split('\t') # 假设数据以制表符分隔
sheet.append(data)
# 保存Excel文件
wb.save('result.xls')
```
以上代码将会读取名为data.txt的txt文件,提取包含关键字的行,并将其保存为result.xls的Excel文件。请注意,根据具体情况调整数据的分隔符和文件路径。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)