鱼C论坛

 找回密码
 立即注册
查看: 1987|回复: 4

[已解决]如何显示找到的关键字的前后10个字的内容

[复制链接]
发表于 2023-7-19 20:10:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如何显示找到的关键字的前后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)
最佳答案
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[start_index:end_index]
                    print(f"Found '{keyword}' in {file}. Context: {context}")

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

search_keywords_in_html(directory, keyword)


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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[start_index:end_index]
                    print(f"Found '{keyword}' in {file}. Context: {context}")

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

search_keywords_in_html(directory, keyword)


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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-19 20:10:34 | 显示全部楼层
要显示找到的关键字前后10个字符的内容,您可以修改 search_keywords_in_html() 函数,并利用字符串索引来实现。以下是修改后的代码:
import osdef 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[start_index:end_index]  # 提取关键字周围的内容                                        print(f"在 {file} 中找到 '{keyword}'")                    print(found_content)                    print('-' * 50)# 指定要搜索的目录和关键字directory = 'f:\\'keyword = input('请输入要查询的内容:')search_keywords_in_html(directory, keyword)
在这个修改后的代码中,我们使用了 index() 方法找到关键字在文本中的起始索引。获取到起始索引后,我们计算出关键字前后10个字符的起始和结束索引,并使用切片操作提取这一范围内的内容。然后,我们将其打印出来,以显示找到的关键字周围的内容。

希望这个回答对您有所帮助。如果您还有其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-19 20:10:41 | 显示全部楼层
您可以使用Python的内置字符串方法来解决此问题。首先,使用  str.find()  方法找到关键字在字符串中的位置。然后,根据这个位置和关键字的长度,来得到关键字前后10个字符的范围。请注意处理关键字位于字符串起始或结束位置时的情况。代码如下:
import osdef 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[start:end]}")# 指定要搜索的目录和关键字directory = 'f:\\'keyword = input('请输入要查询的内容')search_keywords_in_html(directory, keyword)
在这个代码中,如果关键字在文件中被找到,我们就计算出显示的开始位置(关键字的位置减去10,但不少于0)和结束位置(关键字的位置加上关键字的长度加上20,但不多于内容的总长度),然后打印出这个范围内的内容。这样,您就能看到关键字前后各10个字符的上下文了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[start:end]}'")

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

search_keywords_in_html(directory, keyword)

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

非脚本回答,求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 08:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表