python按关键字列表查找并输出其所在行

python按关键字列表查找并输出其所在行

网上一般是python中取文本中指定关键词的行并保存,如果需要批量提取会有些麻烦。
这里主要根据python 如何实现并行查找关键字所在的行?,代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*- 
__author__ = 'Shengwei Ma'
__author_email__ = 'shengweima@icloud.com'


with open('3.txt', 'r') as f1:
    a = set(line.strip() for line in f1)

with open('wheat_est_gi.fa.gff3', 'r') as f:
    for line in f:
        line1 = line.strip().split('\t')
        Name = line1[8].split(';')[1].split('=')[1]
        if Name in a:
            print line,

但是,实际操作中遇到一些问题及困惑
如:Error:IndexError: list index out of range,参考了IndexError: list index out of range的错误原因及解决方案

改正后的代码:

#设置输出文件名称,w为可写
out = open('E:/test/find.txt','w') 
#输入关键字列表.txt,r为只读
with open('E:/test/keyword.txt','r') as keyword: 
    keyword2=set(line.strip() for line in keyword)
    
#输入需要查找的文件
with open('E:/test/G005.gff3','r') as gff:
    for line in gff:
    #分成9列
        line1=line.strip().split('\t',8)
        #print(line1)
#解决IndexError: list index out of range问题
        try:
        #第9列,选取"ID="和".v3"之间的字段
            Name = line1[8].split('ID=')[1].split('.v3')[0]
        except:
            continue
        #print(Name)
        #判断name是否在keyword2里,如果是,则输出
        if Name in keyword2:
            #print (line)
            out.write(line)

keyword.txt
相关阅读
.strip()
\r \t \n
.split()

  • 1
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 在Python,我们可以使用`open()`函数打开一个文本文件,并使用`readlines()`方法来逐读取文件内容。然后,我们可以使用`for`循环遍历每一,在每一使用`in`操作符来判断是否存在我们想要查找关键字。 下面是一个示例代码,用于查找关键字提取内容: ```python def extract_lines_with_keyword(file_path, keyword): # 打开文件并逐读取内容 with open(file_path, 'r') as file: lines = file.readlines() # 遍历每一,判断是否存在关键字提取内容 extracted_lines = [] for line in lines: if keyword in line: extracted_lines.append(line) return extracted_lines ``` 在上面的代码,`extract_lines_with_keyword()`函数接受两个参数:`file_path`表示文件路径,`keyword`表示要查找关键字。函数首先打开文件并逐读取内容,然后使用`for`循环遍历每一,使用`in`操作符判断关键字是否存在于该。如果存在关键字,则将整内容添加到一个列表。最后,返回所有包含关键字列表。 你可以将上述代码保存在一个Python文件,然后调用`extract_lines_with_keyword()`函数来查找关键字提取内容。例如: ```python file_path = 'example.txt' keyword = 'python' extracted_lines = extract_lines_with_keyword(file_path, keyword) for line in extracted_lines: print(line) ``` 上述代码假设你已经有一个名为`example.txt`的文本文件,并且想要查找包含关键字`python`的。然后,它会打印出所有包含关键字的内容。 ### 回答2: 在Python,可以使用字符串的`find()`方法来查找关键字,并通过字符串的`splitlines()`方法将文本按划分。具体步骤如下: 1. 将待查找的文本保存到一个字符串变量。 2. 使用`find()`方法查找关键字在字符串的位置,如果找到,则返回关键字所在位置的索引值;若找不到,则返回-1。 3. 将字符串按划分为一个列表,可以使用`splitlines()`方法。 4. 遍历划分后的列表,使用关键字的索引值对每一判断,若索引值大于等于0,则表示关键字在该存在;则可以将该添加到另一个列表,构成提取到的整。 5. 完成遍历后,提取到的整将保存在另一个列表,可以根据需求输出或进一步处理。 以下是一个示例代码: ```python text = """Python是一种简单易学但功能强大的编程语言。它广泛应用于Web开发、数据分析、人工智能等领域。Python具有丰富的内置函数和库,可以大大提高编程效率。 Python关键字包括if、else、for、while、def等。我们想要提取具有关键字的整,并将它们保存在一个列表。 这里是一个示例: if n > 0: print("数字为正数") else: print("数字为负数") 我们可以使用Python关键字查找和整提取的操作。 """ keyword = "print" # 待查找关键字 lines = text.splitlines() # 按划分文本 extracted_lines = [] # 保存提取到的整 for line in lines: if line.find(keyword) >= 0: extracted_lines.append(line) # 输出提取到的整 for extracted_line in extracted_lines: print(extracted_line) ``` 运上述代码,将会输出: ``` print("数字为正数") print("数字为负数") ``` 这样,我们就可以轻松地在文本查找关键字,并将包含关键字的整提取出来。 ### 回答3: Python提供了一种简单的方式来查找关键字提取的方法。可以使用Python的读写文件功能和字符串处理功能来实现这个功能。 首先,我们需要打开一个文件并读取其的内容。可以使用`open()`函数打开文件,并使用`readlines()`方法读取所有的内容。将这些内容存储在一个列表。 接下来,我们可以使用循环遍历列表的每一。在每一,可以使用`in`关键字判断关键字是否存在。如果关键字存在,我们可以将整提取出来,并将其存储在一个新的列表,或者进其他操作。 以下是一个例子,演示如何使用Python查找关键字并整提取: ```python # 文件路径 file_path = "example.txt" # 关键字 keyword = "Python" # 打开文件并读取内容 with open(file_path, "r") as file: lines = file.readlines() # 存储包含关键字的整 results = [] # 遍历每一 for line in lines: # 判断关键字是否存在于当前 if keyword in line: # 将包含关键字的整添加到结果列表 results.append(line) # 打印结果 for result in results: print(result) ``` 在这个例子,我们假设存在一个名为"example.txt"的文本文件,其包含多个文本。我们想要找到包含关键字"Python"的,并提取出来。 请根据具体需求修改文件路径和关键字,并适应不同的场景。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值