Python,从关键字打印到下一个点
这是我的代码Python,从关键字打印到下一个点,python,string,Python,String,这是我的代码 a = input("Enter file name: ") b = input("Enter keyword: ") def search_string_in_file(file_name, string_to_search): line_number = 0 results = "" with open(file_name, 'r' , encoding='latin1') as read_o
a = input("Enter file name: ")
b = input("Enter keyword: ")
def search_string_in_file(file_name, string_to_search):
line_number = 0
results = ""
with open(file_name, 'r' , encoding='latin1') as read_obj:
for line in read_obj:
line_number += 1
if string_to_search in line:
print(line)
search_string_in_file(a, b)
此时,它将打开您在第一次输入中设置的文件,并逐行搜索此文件以查找您在第二次输入中设置的关键字
现在,它将打印找到关键字的整行
我想做的就是从关键字开始打印到下一个点
例如:
file.txt
关键字=我的
实际结果打印两行,因为两行都包含“my”。但它只应打印以下内容:
my house.
my girlfriend hates it, but that's ok.
到目前为止还没有找到任何答案,请帮助我您可以简单地使用
str
类的find
方法,它告诉您找到子字符串的最低索引
我将您的代码修改为如下内容:
a = input("Enter file name: ")
b = input("Enter keyword: ")
def search_string_in_file(file_name, string_to_search):
line_number = 0
results = []
with open(file_name, 'r', encoding='latin1') as read_obj:
for line in read_obj:
line_number += 1
for subline in line.split('.'):
word_index = subline.find(string_to_search)
if word_index != -1:
results.append(subline[word_index:].strip('\n') + '.')
return results
print(search_string_in_file(a, b))
现在,它可以准确地处理你想要的
或者,如果txt文件足够大,并且您不想存储行,您可以只打印行而不是将其存储到列表中
顺便说一句,你没有在任何地方使用
行号
变量 我们可以使用操作符[]
拼接到字符串行
。借助str.find()
,我们可以确定需要打印的小部分。从:
下面是我们重写代码的方法:
a = input("Enter file name: ")
b = input("Enter keyword: ")
def search_string_in_file(file_name, string_to_search):
line_number = 0
results = ""
with open(file_name, 'r' , encoding='latin1') as read_obj:
for line in read_obj:
line_number += 1
word_index = line.find(string_to_search) # position of first letter of the word
if (word_index != -1): # meaning the word was found
period_index = line.find('.', word_index) # position of first period after start of word
print(line[word_index:period_index]
search_string_in_file(a, b)
请记住,如果字符串\u to\u search
中有一个句点“.”,这将变得不可靠。要确保在本例中打印出整个字符串,请执行以下操作:
period_index = line.find('.', word_index+len(string_to_search))
在查找句点之前,这将跳过整个
string\u to\u search
。文本文件非常大,有很多特殊字符,有些不可读。谢谢你的帮助。我没有发现我在任何地方都没有使用line_number var,
a = input("Enter file name: ")
b = input("Enter keyword: ")
def search_string_in_file(file_name, string_to_search):
line_number = 0
results = ""
with open(file_name, 'r' , encoding='latin1') as read_obj:
for line in read_obj:
line_number += 1
word_index = line.find(string_to_search) # position of first letter of the word
if (word_index != -1): # meaning the word was found
period_index = line.find('.', word_index) # position of first period after start of word
print(line[word_index:period_index]
search_string_in_file(a, b)
period_index = line.find('.', word_index+len(string_to_search))