如果想要将关键词所在的句子重新保存在一个新的txt文件中,所在的句子指的是以句号"."开始,以句号"."结束的句子,而不是整片文章,应该如何修改?

如果想要将关键词所在的句子重新保存在一个新的txt文件中,所在的句子指的是以句号"."开始,以句号"."结束的句子,而不是整片文章,应该如何修改?

 
 
import re
 
with open('keyword.txt', 'r') as file:
    keyword = [word.strip() for word in file.readlines()]
 
with open('file.txt', 'r') as file:
    article = file.read()
 
unmatched_keywords = []
for word in keyword:
    pattern = re.compile(fr'\b{re.escape(word)}\b')
    match = re.search(pattern, article)
    if match:
        article = re.sub(pattern, f"<b>{match.group()}</b>", article, count=1) #注意这里!!!
    else:
        unmatched_keywords.append(word)
 
print(article)
 
with open('unmatched_keywords.txt', 'w') as file:
    for word in unmatched_keywords:
        file.write(word + '\n')
 

你好,在吗?你这个问题有点问题,

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7655774
  • 这篇博客你也可以参考下:深度学习制作自己的数据集—为数据集打上标签保存为txt文件,并进行划分和加载数据集
  • 除此之外, 这篇博客: 记录关于利用txt文件划分训练集、测试集与验证集中的 利用txt文件划分训练集、测试集与验证集 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    在基于深度学习的目标检测任务中,往往需要将数据图片划分成训练集、验证集与测试集,在此记录一种笨办法,各位大佬可忽略。

    训练集:日常学习
    验证集:模拟考试
    测试集:期末考试

    • 第一步,先将原jpg数据图片与标签txt文件分别存放在一个文件夹内,如下图:
      在这里插入图片描述
      然后将以下代码编辑在一个py文件内,eg:data_class.py:
    # 将一个文件夹下数据按比例分在三个文件夹下
    import os
    import random
    import shutil
    from shutil import copy2
    datadir_normal = "/****/*****/****/****/JPEGImages/labels"#更换为自己的路径
    
    all_data = os.listdir(datadir_normal)#(图片文件夹)
    num_all_data = len(all_data)
    print( "总数量: " + str(num_all_data) )
    index_list = list(range(num_all_data))
    print(index_list)
    
    #生成随机种子,使得每一次划分的数据一样,如果没有要求,可以删除本段代码
    r=random.random
    random.seed(2021)
    random.shuffle(index_list,random=r)
    print(index_list)
    #生成随机种子,使得每一次划分的数据一样,如果没有要求,可以删除本段代码
    
    num = 0
    trainDir = "/****/*****/****/****/JPEGImages/train/"#(将训练集放在这个文件夹下)
    if not os.path.exists(trainDir):
        os.mkdir(trainDir)     
    validDir = '/****/*****/****/****/JPEGImages/valid/'#(将验证集放在这个文件夹下)
    if not os.path.exists(validDir):
        os.mkdir(validDir)        
    testDir = '/****/*****/****/****/JPEGImages/test/'#(将测试集放在这个文件夹下)        
    if not os.path.exists(testDir):
        os.mkdir(testDir)
            
    for i in index_list:
        fileName = os.path.join(datadir_normal, all_data[i])
        if num < num_all_data*0.6: #Train:0.6
            print(str(fileName))
            copy2(fileName, trainDir)
        elif num>num_all_data*0.6 and num < num_all_data*0.8:#valid:0.2
            print(str(fileName))
            copy2(fileName, validDir)
        else:#test:0.2
            copy2(fileName, testDir)
        num += 1
    

    运行后,将在JPEGImages文件夹下看到多了train、test、valid3个文件夹,如下图:
    在这里插入图片描述
    文件夹内容就是根据上边的程序划分的标签txt文件。

    • 第二步,提取刚刚生成的train、test、valid3个文件夹内的txt文件名称并分别存放在TRAIN、TEST、VALID3个txt文件中。
    • 提取命令:
    • find /*****/******/*****/****/JPEGImages/test -name "*.txt" > TEST.txt
    • find /*****/******/*****/****/JPEGImages/train -name "*.txt" > TRAIN.txt
    • find /*****/******/*****/****/JPEGImages/valid -name "*.txt" > VALID.txt
      三条命令运行结束以后可以看到多了三个txt文件,如下图:
      在这里插入图片描述
      打开文件,内容为:
    /home/outsider/其他/1/JPEGImages/valid/20210110113149061.txt
    

    需要使用文档的查找与替换功能将3个txt文档内的名称修改为如下格式:

    20210110113149061
    

    文档的查找与修改如下:
    在这里插入图片描述
    替换后效果如下:
    在这里插入图片描述

    • 第三步,将以下代码编辑在一个py文件内,eg:copy_class.py:
    from PIL import Image
    im_num = []
    for line in open("/***/****/***/VALID.txt", "r"):
        im_num.append(line)
        print(im_num)
    
    for a in im_num:
        im_name = '/***/***/***/JPEGImages/images/{}'.format(a[:-1]) + '.jpg'  #原始路径
        print(im_name)
        im = Image.open(im_name)  # 打开指定路径下的图像
    
        tar_name = '/***/***/***/JPEGImages/valid/{}'.format(a[:-1]) + '.jpg'  #移动后的路径
        print(tar_name)
        im=im.convert('RGB')
        im.save(tar_name)  # 另存
        im.close()
    

    每次运行后,需要将文件名修改下,修改为相对应的txt文档,程序运行结束后,将在train、test、valid3个文件夹内看到程序已经将标签txt对应的图片复制过来了。

    到此,数据集就已经划分好了,也可以根据图片名称将对应的txt文件复制到相应的文件夹内,方法比较老实,大佬们就不用看啦。
    最后,我将两个py文件放在下方。

  • 以下回答来自chatgpt:

    首先,根据题目描述,我们需要从原始文本中筛选以句号"."开始、以句号"."结束的句子,并将这些句子保存到一个新的txt文件中。以下是修改的代码实现该功能:

    import re
    
    def save_sentences_with_keyword(keyword, original_filename, new_filename):
        with open(original_filename, 'r') as file:
            content = file.read()
    
        # 使用正则表达式匹配以句号"."开始、以句号"."结束的句子
        sentences = re.findall(r'\.[^\.]+\.', content)
    
        # 根据关键词筛选句子
        keyword_sentences = [sentence for sentence in sentences if keyword in sentence]
    
        # 将筛选出的句子保存到新的txt文件中
        with open(new_filename, 'w') as file:
            for sentence in keyword_sentences:
                file.write(sentence + '\n')
    
    save_sentences_with_keyword('关键词', '原始文本.txt', '新的文本文件.txt')
    

    注意:在代码中,需要将关键词替换为实际的关键词,原始文本.txt替换为实际的原始文本文件名,新的文本文件.txt替换为保存筛选出的句子的新的文本文件名。

    这个代码会根据关键词从原始文本中提取出符合要求的句子,并将这些句子保存到新的文本文件中。请确保新的文本文件.txt是一个不存在的文件,否则会覆盖原有内容。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^