我正在尝试创建一个程序,它从用户输入的字符串中获取输入,并在文本文件中搜索该字符串并打印出行号。如果字符串不在文本文件中,它将打印出来。我该怎么做?此外,我不确定即使我到目前为止的for循环也适用于此,所以任何建议/帮助都会很棒:)。
到目前为止我所拥有的:
file = open('test.txt', 'r')
string = input("Enter string to search")
for string in file:
print("") #print the line number
答案 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.01f
与string
完全匹配,我们可以在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