Python:For loop读取文本文件并没有对所有文本文件记录正确执行

Python:For loop读取文本文件并没有对所有文本文件记录正确执行,python,Python,我对以下代码有疑问 我正在尝试将一个txt文件作为输入,其中包含以下数据 aaaaaaaaaa bbbbbbbbbb cccccccccc 并将其传递给searchForJob函数,以在不同的文件中执行搜索,但输入文件的“我的for循环”没有正确执行,它没有占用输入文件的所有三行。它只拾取第二行(BBBBBB)或第三行(ccccccccc)。有人能帮我吗。我不熟悉python语言 def searchForJob(job): with open('some location/Jls.t

我对以下代码有疑问

我正在尝试将一个txt文件作为输入,其中包含以下数据

aaaaaaaaaa
bbbbbbbbbb
cccccccccc
并将其传递给searchForJob函数,以在不同的文件中执行搜索,但输入文件的“我的for循环”没有正确执行,它没有占用输入文件的所有三行。它只拾取第二行(BBBBBB)或第三行(ccccccccc)。有人能帮我吗。我不熟悉python语言

def searchForJob(job):
    with open('some location/Jls.txt',"U") as lines:
        for line in lines:
            if line.find(job)!=-1:
                print(job + ' : Found')
                break;

    return




jobNames = open('some location/JNames.txt')
try:
    for job in jobNames:
        print(job)
        searchForJob(job)
finally:
    jobNames.close()

读取文件时,请使用
r
模式

每行都有一个尾随的
\n
,因此您需要
strip()
它们。使用
repr(…)
函数,以便可以看到尾随的空格

使用Python语言功能,如

遵循样式指南

def search_for_job(job):
    with open('j.txt', 'r') as f:
        for line in f:
            if job in line:
                print(repr(job) + ' : Found in ' + repr(line))
                break


with open('n.txt', 'r') as job_names:
    for job in job_names:
        job = job.strip()
        print('Searching for job ' + repr(job))
        search_for_job(job)
j、 文本

n、 文本

样本输出:

$ python3 read.py
Searching for job 'name 1'
'name 1' : Found in 'job 2, name 1...\n'
Searching for job 'name 2'
'name 2' : Found in 'job 1, name 2...\n'
Searching for job 'name 3'

searchForJob
中的
open
的第二个参数中,“U”应该做什么?我认为这是一种模式。“U”可能会在txt文件中看到新行。您想在多文本文件中搜索aaaaa bbbbbb cccc吗?是的,milti文本文件意味着它将是一个原始文本文件,编号为“n”lines@MykWillis“U”是通用换行符模式(在Python 3中不再提供)要转换非Linux行结束符,我仍然得到相同的输出。同样的问题再次出现:(@amritpalingthethi)您是否检查了结尾
\n
新行字符?
name 1
name 2
name 3
$ python3 read.py
Searching for job 'name 1'
'name 1' : Found in 'job 2, name 1...\n'
Searching for job 'name 2'
'name 2' : Found in 'job 1, name 2...\n'
Searching for job 'name 3'