Python按条件批量删除TXT文件行工具

2024-12-29 03:50

本文主要是介绍Python按条件批量删除TXT文件行工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...

1.简介

一个由python编写android的可根据TXT文件按条件批量删除行工具,资源及文件已打包成exe文件

功能:

  • 批量删除行含关键字或词的行(多个关键字/词中间用空格隔开)
  • 批量删除空行
  • 批量字符小于多少(可设定)删除行
  • 批量删除匹配正则的行

使用方法:

  • 点击打开文件批量选择TXT文件(可以直接拖拽)。
  • 需要的功能前打勾,并配置。
  • 点击【执行】即可进行转换。
  • 最后会生成原文件名+_new.txt的文件。

2.运行效果

Python按条件批量删除TXT文件行工具

3.相关源码

import os
import re
import time
from tkinter import ttk, filedialog, messagebox, INSERT, Tk, Button, Text, Scrollbar, \
    HORIZONTAL, VERTICAL, IntVar, Checkbutton, Label, StringVar, Entry  # 有Combobox、LabelFrame 组件时需要本语句
import windnd
 
ui_pos = {
    "title": "TXT文件处理助手",
    "geometry": "450x300",  # 长乘宽
 
}
 
FilePaths = ()
 
 
def clearAll():
    ctrl_FileListBox.delete(1.0, "end")  # 清空文件路径
    str_KeyWord.set("")
    str_KeyNum.set("")
 
 
def getTxtFiles():
    global FilePaths
    files = filedialog.askopenfilenames(filetypes=[('text files', '.txt')])
    if files:
        FilePaths = files
        for f_name in files:
            ctrl_FileListBox.insert('end', f_name)
            ctrl_FileListBox.insert(INSERT, '\n')
    else:
        messagebox.showinfo(title='提示', message='没有选择任何文件!')
 
 
def KeyWordScan(keys, s):
    key_words = keys.split(" ")
    t_f = False
    for key_word in key_words:
        if key_word in s:
            t_f = True
    return t_f
 
 
def ctrl_StartBtn_clicked():
    has_key_words = int_CheckBox1.get()
    key_words = str_KeyWord.get()
 
    has_empty_line = int_CheckBox2.get()
 
    has_N = int_CheckBox3.get()
    n = str_KeyNum.get()
 
    has_zz = int_CheckBox4.get()
    zz = str_zz.get()
    try:
        for file in FilePaths:  # 循环遍历文件
            s_file = open(os.path.splitext(file)[0] + "_new" + os.path.splitext(file)[1], 'w+')  # 文件保存位置
            f_lines = open(file, encoding='utf8').readlines()  # 打开文件,读入每一行
            for s in f_lines:  # s: 每一行的内容
                #China编程 操作1
                if has_key_words:
                    if KeyWordScan(key_words, s):
                        continue
                # 操作2
                if has_empty_line:
                    if len(s.strip()) == 0:
                        continue
   php             # 操作3:
                if has_N:
                    if len(s.strip()) < int(n):
                        continue
                if has_zz:
                    if re.match(zz, s.strip()):
                        continue
                s_file.write(s)
            s_file.close()  # 关闭文件
    except Exception as e:
        with open("log", "a+") as f:
            f.write(time.strftime("%Y-%m-%d, %H:%M:%S", time.localtime()) + "\n")
            f.write(repr(e) + "\n")
 
 
def draggedFiles(files):
    msg = '\n'.join((item.decode('gbk') for item in files))
    for f_name in files:
        ctrl_FileListBox.insert('end', f_name)
        ctrl_FileListBox.insert(INSERT, '\n')
    print(msg)
 
 
root = Tk()  # 设定窗体变量
root.geometry(ui_pos["geometry"])  # 格式('宽x高+x+y')其中x、y为位置
root.title(ui_pos["title"])
windnd.hook_dropfiles(root, func=draggedFiles)
 
ctrl_Frame1 = ttk.LabelFrame(root, text='选项')
ctrl_Frame1.place(x=14, y=72, width=388, height=140)
 
ctrl_StartBtn = Button(root, text='执行', font=('宋体', '9'),
                       command=ctrl_StartBtn_clicked)  # 可在括号内加上调用函数部分 ,command=ctrl_StartBtn_clicked
ctrl_StartBtn.place(x=22, y=250, width=72, height=29)
 
ctrl_QuitBtn = Button(root, text='清除', font=('宋体', '9'), command=clearAll)  # 可在括号内加上调用函数部分 ,command=ctrl_QuitBtn_clicked
ctrl_QuitBtn.place(x=108, y=250, width=72, height=29)
 
ctrl_FileListBox = Text(root, font=('宋体', '9'))
ctrl_FileListBox.place(x=14, y=7, width=260, height=38)
ctrl_Scrollbar1 = Scrollbar(root, command=ctrl_FileListBox.xview, orient=HORIZONTAL)
ctrl_Scrollbar1.place(x=14, y=46, width=261, height=16)
ctrl_Scrollbar2 = Scrollbar(root, command=ctrl_FileListBox.yview, orient=VERTICAL)
ctrl_Scrollbar2.place(x=275, y=7, width=16, height=39)
ctrl_FileListBox.config(xscrollcommand=ctrl_Scrollbar1.set, yscrollcommand=ctrl_Scrollbar2.set, wrap='none')
 
int_CheckBox1 = IntVar()  # 绑定变量
ctrl_CheckBox1 = Checkbutton(ctrl_Frame1, text='删除行含关键字或词的行', variable=int_CheckBox1, font=('宋体', '9'))
ctrl_CheckBox1.place(x=14, y=14, height=22)  # 考虑到对齐问题,不列入宽度,需要时手动加入 width=130
ctrl_CheckBox1.deselect()  # 默认为未选中状态
 
Ctrl_Label1 = Label(ctrl_Frame1, text="关键字:")
Ctrl_Label1.place(x=180, y=14, width=55, height=22)
 
str_KeyWord = StringVar()  # 绑定变量
ctrl_KeyWord = Entry(ctrl_Frame1, textvariable=str_KeyWord, font=('宋体', '9'))
ctrl_KeyWord.place(x=230, y=14, width=150, height=22)
 
int_CheckBox2 = IntVar()  # 绑定变量
ctrl_CheckBox2 = Checkbutton(ctrl_Frame1, text='删除空行', variable=int_CheckBox2, font=('宋体', '9'))
ctrl_CheckBox2.place(x=14, y=36, height=22)  # 考虑到对齐问题,不列入宽度,需要时手动加入 width=130
ctrl_CheckBox2.deselect()  # 默认为未选中状态
 
int_CheckBox3 = IntVar()  # 绑定变量
ctrl_CheckBox3 = Checkbutton(ctrl_Frame1, text='删除字符小于N的行', variable=int_CheckBox3, font=('宋体', '9'))
ctrl_CheckBox3.place(x=14, y=58, height=22)  # 考虑到对齐问题,不列入宽度,需要时手动加入 width=130
ctrl_CheckBox3.deselect()  # 默认为未选中状态
# N标签
Ctrl_Label = Label(ctrl_Frame1, text="N =")
Ctrl_Label.place(x=180, y=58, width=55, height=22)
# N
str_KeyNum = StringVar()  # 绑定变量
ctrl_KeyNum = Entry(ctrl_Frame1, textvariable=str_KeyNum, font=('宋体', '9'))
ctrl_KeyNum.place(x=230, y=58, width=30, height=22)
 
int_CheckBox4 = IntVar()  # 绑定变量
ctrl_CheckBox4 = Checkbutton(ctrl_Frame1, text='删除符合正则的行', variable=int_CheckBox4, font=('宋体', '9'))
ctrl_CheckBox4.place(x=14, y=80, height=22)  # 考虑到对齐问题,不列入宽度,需要时手动加入 width=130
ctrl_CheckBox4.deselect()  # 默认为China编程未选中状态
 
# N标签
Ctrl_Label2 = Label(ctrl_Frame1, text="正则:")
Ctrl_Label2.place(x=180, y=80, width=55, height=22)
# N
str_zz = StringVar()  # 绑定变量
ctrl_zz = Entry(ctrl_Frame1, textvariable=str_zz, font=('宋体', '9'))
ctrl_zz.place(x=230, y=80, width=150, height=22)
 
ctrl_OpenFileBtn = Button(root, text='选择文件',
      编程                    font=('宋体', '9'),
                          command=getTxtFiles)  # 可在括号内加上调用函数部分 ,command=ctrl_OpenFileBtn_clicked
ctrl_OpenFileBtn.place(x=305, y=18, width=72, height=29)
 
root.mainloop()

到此这篇关于Python按条件批量删除TXT文件行工具的文章就介绍到这了,更多相关Python批量删除TXT内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于Python按条件批量删除TXT文件行工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:http://www.cppcns.com/jiaoben/python/695192.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1152832

相关文章

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

Java如何从Redis中批量读取数据

《Java如何从Redis中批量读取数据》:本文主要介绍Java如何从Redis中批量读取数据的情况,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一.背景概述二.分析与实现三.发现问题与屡次改进3.1.QPS过高而且波动很大3.2.程序中断,抛异常3.3.内存消

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元