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