是否可以删除所有少于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++ 中打开每个文件,那么已经有一个用于计算字数的功能。只需双击底部栏中的“长度”,即可查看带有字数统计的文档摘要。
您可以在此处查看有关此方法的更多信息,甚至可以查看其正则表达式: https://appuals.com/check-the-word-count-in-notepad/#:~:text=Open%20your%20Notepad%2B%2B%20by,word%20count%20of%20the%20document。