【问题标题】:To find the line number of the string searched in Python查找在 Python 中搜索的字符串的行号
【发布时间】:2013-03-22 05:49:51
【问题描述】:
    def c1():
        logfile = open("D:\myfile.txt", 'r')
        for num1, line in enumerate(logfile):
                if "request=100" in line:
                    print num1
                    return True
        return False

    def c2():
        logfile = open("D:\myfile.txt", 'r')
        for num2, line in enumerate(logfile):
                if "response=200" in line:
                    print num2
                    return True
        return False    

    if c1() == True and c2() == True:
        print "Test Case Passed"  
    else:
        print "Test Case Failed"

在上面的代码中,不存在检查行号以使 request=100 和 response=200 位于同一行。我需要的。

另外,我想仅在满足以下条件时将结果打印为“通过”...

- both c1 and c2 are True
- both "request=100" and "response=200" should fall in same line 
- if any other line also consist of "request=100" and "response=200" then that also should be counted

结果为“失败”,如果:

- if any one line which consists of "request=200" and "response=200"
- if any one line which consists of "request=100" and "response=100" 
- or any case in which no line should have apart from "request=100" and "response=200"

考虑“myfile”有以下数据:

request=100 XXXXXXXXXXXXXXXXXXXXXXXXXXXX \n
XXXXXXXXXXXXXXXX response=200 XXXXXXXXX \n
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \n
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \n
XXXX request=100 XXXXX response=200 XXXXXXXXXXX \n
XXXXXXX request=200 XXXXXX response=100 XXXXXXX \n
XXXXXXXX request=100 XXXX response=100"         \n

在上面的文件中,result 是 Fail 因为 request 和 response 除了需要的值之外有不同的值。只有第 5 行有正确的值,因此结果失败。

【问题讨论】:

    标签: python string search


    【解决方案1】:

    如果我理解正确,你应该将两个条件放在一个循环中,并一直循环直到你到达行尾,或者遇到另一行条件:

    def are_they_on_the_same_line():
        logfile = open("D:\myfile.txt", 'r')
        intermediate_result = False
        for num1, line in enumerate(logfile):
                if "request=100" in line and "response=200":
                    if intermediate_result == True:
                        return False
                    intermediate_result = True
        return intermediate_result
    

    除了您提到的失败条件之外,还有其他条件会失败。但你提到的两者并不相互排斥。

    编辑:不等待这是错误的,从示例来看。我无法理解你的情况。也许它可以帮助您获得一个想法,如果没有,请用另一个例子阐明条件。

    【讨论】:

      猜你喜欢
      • 2014-02-08
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      相关资源
      最近更新 更多