如何使用正则表达式删除所有少于 250 个字的文件(或所有文件的全部内容)?

如何使用正则表达式删除所有少于 250 个字的文件(或所有文件的全部内容)?

是否可以删除所有少于250字的文件(或所有文件的全部内容)?

我尝试了这个正则表达式,但需要稍微改进一下。有人能帮助我吗?

  • 寻找:(?s)(.*?(\w+\s?){1,250}).*$
  • 用。。。来代替:(EMPTY)

答案1

正如您在评论中所说,您考虑一个仅由字母组成的单词,这对您有用:

  • 找什么:\A(?i)[^a-z]*(?:[a-z]+[^a-z]+){0,249}(?:[a-z]+[^a-z]*)?\z
  • 用。。。来代替:LEAVE EMPTY

解释:

\A          # beginning of file
(?i)        # case insensitive
    [^a-z]*     # 0 or more non letter
    (?:         # non capture group
        [a-z]+      # 1 or more letter
        [^a-z]+     # 1 or more non letter
    ){0,249}    # end group, may appear 0 up to 249 times
    (?:         # non capture group
        [a-z]+      # 1 or more letter
        [^a-z]*     # 0 or more non letter
    )?          # end group, optional
\z          # end of file

答案2

对于第一种情况删除文件内容少于 250 个字,参见来源

  • Ctrl+H
  • 寻找:(?s)\A[[:space:]]*(?:[^[:space:]]+[[:space:]]+){0,251}[^[:space:]]+[[:space:]]*\z|\A[[:space:]]+\z
  • 用。。。来代替:LEAVE EMPTY
  • 查看 相符
  • 查看 环绕
  • 查看 正则表达式
  • 取消选中 . matches newline
  • Replace all

第二种情况:

对于第二种情况,使用以下命令删除文件内容超过 250 个单词

  • Ctrl+H
  • 寻找:(?s)(.*?(\w+\s+){249,}).*\Z 或者 (?s)\A(.*?(\w+\s+){249}).*\Z
  • 用。。。来代替:LEAVE EMPTY
  • 查看 相符
  • 查看 环绕
  • 查看 正则表达式
  • 取消选中 . matches newline
  • Replace all

答案3

我编写了这段 Python 代码,用于删除所有少于 250 个字符的文件。也许有人需要它。查看两种代码版本这里:

import os
import re
import random
import unidecode
import nltk
from nltk import tokenize
# nltk.download('punkt')
import requests
from usp.tree import sitemap_tree_for_homepage
 
def read_text_from_file(file_path):
    """
    Aceasta functie returneaza continutul unui fisier.
    file_path: calea catre fisierul din care vrei sa citesti
    """
    with open(file_path, encoding='utf8') as f:
        text = f.read()
        f.close()
        return text
 
FOLDER_LOCAL = 'd:\\Folder1'
 
counter_sterse = 0
for f in os.listdir(FOLDER_LOCAL):
    if f.endswith('.html') or f.endswith('.htm'):
        filepath = os.path.join(FOLDER_LOCAL, f)
        page_html = read_text_from_file(filepath)
        if len(page_html) < 250:
            os.remove(filepath)
            counter_sterse += 1
            continue
 
print("S-au sters {} fisiere".format(counter_sterse))

答案4

如果您无论如何都要以交互方式在 Notepad++ 中打开每个文件,那么已经有一个用于计算字数的功能。只需双击底部栏中的“长度”,即可查看带有字数统计的文档摘要。

Notepad++文档摘要

您可以在此处查看有关此方法的更多信息,甚至可以查看其正则表达式: https://appuals.com/check-the-word-count-in-notepad/#:~:text=Open%20your%20Notepad%2B%2B%20by,word%20count%20of%20the%20document

相关内容