Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在文本文件中查找字符串:添加else语句后,将继续返回False_Python - Fatal编程技术网

Python 在文本文件中查找字符串:添加else语句后,将继续返回False

Python 在文本文件中查找字符串:添加else语句后,将继续返回False,python,Python,我编写了一个python脚本来查找文本文件中的字符串。它可以找到没有问题的字符串。但是,当我添加else语句以返回字符串“notfound”以防找不到该字符串时,脚本会一直返回“notfound” 我已经检查了stackoverflow的例子,但是没有一个代码解决了我的问题 param=“foo.txt” def getChannel_范围(参数): 参数文件=打开(参数'r') LINES=param_file.readlines() channel_range='CHAN_range'#要在

我编写了一个python脚本来查找文本文件中的字符串。它可以找到没有问题的字符串。但是,当我添加else语句以返回字符串“notfound”以防找不到该字符串时,脚本会一直返回“notfound”

我已经检查了stackoverflow的例子,但是没有一个代码解决了我的问题

param=“foo.txt”
def getChannel_范围(参数):
参数文件=打开(参数'r')
LINES=param_file.readlines()
channel_range='CHAN_range'#要在文本文件中查找的关键字
对于范围内的i(len(行)):
行=行[i]
如果line.find(通道范围)>=0:
chan_range=line.partition('=')[2]
其他:
chan_range=“未找到”
param_file.close()
返回chan_范围
通道范围=获取通道范围(参数)
打印chan_范围

实际结果“未找到”。我知道字符串在文本中。如果我不添加else语句,它会找到字符串并正确返回。

您正在用else语句覆盖结果

试试这个:

if line.find(channel_range) >=0:
   chan_range = line.partition('=')[2]
   break       
else:
   chan_range = "not found"
问题是,如果文件有5行,您将在第3行中查找关键字,但在第4行中找不到关键字,因此您将其设置为“未找到”。
当您第一次找到结果时,“break”退出循环

另一个选项是在for循环之前设置chan_range,并且仅在找到时覆盖它:

chan_range = "not found"
for i in range(len(LINES)):
        line = LINES[i]
        if line.find(channel_range) >=0:
            chan_range = line.partition('=')[2]
另外,少了几个步骤,您就可以在
param_file.readline()
中使用while循环。然后,在字符串中搜索字符串时,可以执行以下操作:
如果mystring in otherstring:

param = "foo.txt"

def getChannel_range(param):

    param_file = open(param, 'r')
    line = param_file.readline()

    channel_range = 'CHAN_RANGE' #keyword to look for in the text file
    chan_range = "not found"
    while line:

        if channel_range in line:
            chan_range = line.split('=')[1]
        line = param_file.readline()

    param_file.close()

    return chan_range

chan_range = getChannel_range(param)
print(chan_range)

谢谢这确实缩短了脚本。谢谢!我应该早点问stackoverflow,这样可以节省我的时间。