ssqchina 发表于 2023-7-19 20:10:15

如何显示找到的关键字的前后10个字的内容

如何显示找到的关键字的前后10个字的内容
源代码如下,该如何修改


import os

def search_keywords_in_html(directory, keyword):
    files = os.listdir(directory)
    for file in files:
      if file.endswith('.html'):
            file_path = os.path.join(directory, file)
            with open(file_path, 'r', encoding='UTF-8') as f:
                content = f.read()
                if keyword in content:
                     print(f"found '{keyword}' in {file}")

# 指定要搜索的目录和关键字
directory = 'f:\\'
keyword = input('请输入要查询的内容')

search_keywords_in_html(directory, keyword)

Mike_python小 发表于 2023-7-19 20:10:27

本帖最后由 Mike_python小 于 2023-7-19 20:14 编辑

你可以在找到关键字时,使用字符串切片操作来获取前后10个字符的内容。下面是修改后的代码示例:


import os

def search_keywords_in_html(directory, keyword):
    files = os.listdir(directory)
    for file in files:
      if file.endswith('.html'):
            file_path = os.path.join(directory, file)
            with open(file_path, 'r', encoding='UTF-8') as f:
                content = f.read()
                if keyword in content:
                  keyword_index = content.index(keyword)
                  start_index = max(0, keyword_index - 10)
                  end_index = min(len(content), keyword_index + len(keyword) + 10)
                  context = content
                  print(f"Found '{keyword}' in {file}. Context: {context}")

# 指定要搜索的目录和关键字
directory = 'f:\\'
keyword = input('请输入要查询的内容:')

search_keywords_in_html(directory, keyword)


这段代码会打印出包含关键字的文件名以及关键字所在位置的前后10个字符的内容。

希望对你有所帮助!如果你还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

陶远航 发表于 2023-7-19 20:10:34

要显示找到的关键字前后10个字符的内容,您可以修改 search_keywords_in_html() 函数,并利用字符串索引来实现。以下是修改后的代码:

import os

def search_keywords_in_html(directory, keyword):
    files = os.listdir(directory)
   
    for file in files:
      if file.endswith('.html'):
            file_path = os.path.join(directory, file)
            
            with open(file_path, 'r', encoding='UTF-8') as f:
                content = f.read()
               
                if keyword in content:
                  index = content.index(keyword)# 找到关键字的起始索引
                  
                  start_index = max(0, index - 10)# 关键字前10个字符的起始索引
                  end_index = min(len(content), index + len(keyword) + 10)# 关键字后10个字符的结束索引
                  
                  found_content = content# 提取关键字周围的内容
                  
                  print(f"在 {file} 中找到 '{keyword}'")
                  print(found_content)
                  print('-' * 50)

# 指定要搜索的目录和关键字
directory = 'f:\\'
keyword = input('请输入要查询的内容:')

search_keywords_in_html(directory, keyword)


在这个修改后的代码中,我们使用了 index() 方法找到关键字在文本中的起始索引。获取到起始索引后,我们计算出关键字前后10个字符的起始和结束索引,并使用切片操作提取这一范围内的内容。然后,我们将其打印出来,以显示找到的关键字周围的内容。

希望这个回答对您有所帮助。如果您还有其他问题,请随时提问。

isdkz 发表于 2023-7-19 20:10:41

您可以使用Python的内置字符串方法来解决此问题。首先,使用str.find()方法找到关键字在字符串中的位置。然后,根据这个位置和关键字的长度,来得到关键字前后10个字符的范围。请注意处理关键字位于字符串起始或结束位置时的情况。代码如下:

import os

def search_keywords_in_html(directory, keyword):
    files = os.listdir(directory)
    for file in files:
      if file.endswith('.html'):
            file_path = os.path.join(directory, file)
            with open(file_path, 'r', encoding='UTF-8') as f:
                content = f.read()
                start = content.find(keyword)
                if start != -1:# 如果找到了关键字
                  start = max(0, start - 10)# 确保范围不超过字符串的开始位置
                  end = min(len(content), start + len(keyword) + 20)# 确保范围不超过字符串的结束位置
                  print(f"found '{keyword}' in {file}, context: {content}")

# 指定要搜索的目录和关键字
directory = 'f:\\'
keyword = input('请输入要查询的内容')

search_keywords_in_html(directory, keyword)


在这个代码中,如果关键字在文件中被找到,我们就计算出显示的开始位置(关键字的位置减去10,但不少于0)和结束位置(关键字的位置加上关键字的长度加上20,但不多于内容的总长度),然后打印出这个范围内的内容。这样,您就能看到关键字前后各10个字符的上下文了。

sfqxx 发表于 2023-7-19 20:13:00

要显示找到的关键字的前后10个字的内容,你需要找到关键字在内容中的位置,然后取出这个位置前后10个字符的内容。你可以使用Python的字符串的 `index` 方法来找到关键字的位置,然后用切片操作来取得前后10个字符。

请注意,你需要考虑关键字在内容的开始或结束部分的情况,这时候前后可能没有10个字符。

修改后的代码如下:

import os

def search_keywords_in_html(directory, keyword):
    files = os.listdir(directory)
    for file in files:
      if file.endswith('.html'):
            file_path = os.path.join(directory, file)
            with open(file_path, 'r', encoding='UTF-8') as f:
                content = f.read()
                if keyword in content:
                  index = content.index(keyword)
                  start = max(0, index - 10)# 确保不会超出内容的开始
                  end = min(len(content), index + len(keyword) + 10)# 确保不会超出内容的结束
                  print(f"found '{keyword}' in {file}, context is '{content}'")

# 指定要搜索的目录和关键字
directory = 'f:\\'
keyword = input('请输入要查询的内容')

search_keywords_in_html(directory, keyword)

这段代码将会打印出关键字在每个文件中的上下文内容,如果关键字在内容的开始或结束部分,可能前后不足10个字符。

非脚本回答,求最佳答案{:10_254:}
页: [1]
查看完整版本: 如何显示找到的关键字的前后10个字的内容