在外部文本文件中查找字符串所在的行号

时间:2017-11-08 21:04:32

标签: python file text external

我正在尝试创建一个程序,它从用户输入的字符串中获取输入,并在文本文件中搜索该字符串并打印出行号。如果字符串不在文本文件中,它将打印出来。我该怎么做?此外,我不确定即使我到目前为止的for循环也适用于此,所以任何建议/帮助都会很棒:)。

到目前为止我所拥有的:

file = open('test.txt', 'r')
string = input("Enter string to search")
for string in file:
    print("") #print the line number

4 个答案:

答案 0 :(得分:1)

您可以实施此算法:

  • 初始化计数器
  • 逐行阅读
  • 如果该行与目标匹配,则返回当前计数
  • 增加点数
  • 如果到达结尾而没有返回,则该行不在文件

例如:

def find_line(path, target):
    with open(path) as fh:
        count = 1
        for line in fh:
            if line.strip() == target:
                return count
            count += 1

    return 0

答案 1 :(得分:0)

filepath = 'test.txt'
substring = "aaa"
with open(filepath) as fp:  
   line = fp.readline()
   cnt = 1
   flag = False
   while line:
       if substring in line:
            print("string found in line {}".format(cnt))
            flag = True
            break
       line = fp.readline()
       cnt += 1
   if not flag:
       print("string not found in file")

答案 2 :(得分:0)

如果0.01fstring完全匹配,我们可以在line中执行此操作:

one-line

以上类型的作品接受它不会print(open('test.txt').read().split("\n").index(input("Enter string to search"))) “不匹配”如果没有。为此,我们可以添加一点print

try

否则,如果try: print(open('test.txt').read().split("\n").index(input("Enter string to search"))) except ValueError: print("no match") 只是{/ 1}}中 的某个地方,我们可以这样做:

string

答案 3 :(得分:0)

文本文件与程序(例如字典和数组)中使用的内存不同,它是顺序的。就像很久很久以前用于存储的旧磁带一样,如果不梳理所有先前的线路(或以某种方式猜测确切的存储位置),就无法获取/找到特定的线路。你最好的选择就是创建一个遍历每一行的for循环,直到它找到它要查找的那一行,返回遍历到该点的行数。

file = open('test.txt', 'r')
string = input("Enter string to search")
lineCount = 0
for line in file:
    lineCount += 1
    if string == line.rstrip(): # remove trailing newline
        print(lineCount)
        break