【技术类-04】python实现docx表格文字和段落文字的“手动换行符(软回车)”变成“段落标记(硬回车)”

作品展示:

背景需求:

把python实现docx表格文字和段落文字的“手动换行符(软回车)”变成“段落标记(硬回车)合并在一起统计数量

【技术类-02】python实现docx段落文字的“手动换行符(软回车)”变成“段落标记(硬回车)”-CSDN博客文章浏览阅读226次,点赞4次,收藏6次。【技术类-02】python实现docx段落文字的“手动换行符(软回车)”变成“段落标记(硬回车)”https://blog.csdn.net/reasonsummer/article/details/136750032

【技术类-03】python实现docx表格文字的“手动换行符(软回车)”变成“段落标记(硬回车)”-CSDN博客文章浏览阅读396次,点赞10次,收藏4次。【技术类-03】python实现docx表格文字的“手动换行符(软回车)”变成“段落标记(硬回车)”https://blog.csdn.net/reasonsummer/article/details/136751324

素材准备——包含段落文字和表格文字

目测有

Word 文档中表格内共有 3 个 '\n' 手动换行符(软回车)。
Word 文档中表格内共有 1 个 <w:p> 段落标记(硬回车)。
Word 文档中段落内共有 3 个 '\ n' 手动换行符(软回车)。
Word 文档中段落内共有 2 个 <w:p> 段落标记(硬回车)。


 

结果验证数量正确

然后把word段落里的手动换行符和word表格里的手动换行符都变成段落标记符号(合并)

全部代码


'''
了解在Python里docx表格里、段落里分别有几个手动换行符(软回车),有几个段落标记符号(硬回车)
作者:AI 对话大师、百度AI对话
时间:2024年3月16日
'''

from docx import Document

# 表格里的

doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\测试word换行符\123.docx')

# 初始化换行符计数器
soft_newline_count_in_tables = 0
hard_newline_count_in_tables = 0

# 遍历文档中的所有表格
for table in doc.tables:
    for row in table.rows:
        for cell in row.cells:
            # 遍历单元格中的每个段落
            for paragraph in cell.paragraphs:
                # 遍历段落中的每个文本运行
                for run in paragraph.runs:
                    # 统计文本运行中软回车(换行符)的数量
                    soft_newline_count_in_tables += run.text.count("\n")
                
                # 段落结束,增加一个硬回车的计数(包括表格单元格中的段落)
                hard_newline_count_in_tables += 1

# 打印统计结果
print(f"Word 文档中表格内共有 {soft_newline_count_in_tables} 个 '\\n' 手动换行符(软回车)。")
print(f"Word 文档中表格内共有 {hard_newline_count_in_tables} 个 <w:p> 段落标记(硬回车)。")


# 段落里的
# 初始化换行符计数器
newline_count = 0
p_count = 0

# 遍历文档中的每个段落,统计换行符数量
for paragraph in doc.paragraphs:
    for run in paragraph.runs:
        # 统计每个文本运行中换行符的数量
        newline_count += run.text.count("\n")
    if paragraph._element is not None and paragraph._element.tag.endswith('p'):
        p_count += 1
  
print(f"Word 文档中段落内共有 {newline_count} 个 '\ n' 手动换行符(软回车)。")
print(f"Word 文档中段落内共有 {p_count} 个 <w:p> 段落标记(硬回车)。")


'''
word表格文字和段落里里的手动换行符变成段落标记 (docx表格)
作者:AI对话大师、百度AI对话
时间:2024年3月15日
'''
from docx import Document
from docx.shared import Pt

# 打开 Word 文档
doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\测试word换行符\123.docx')

# 用于保存要删除的单元格
cells_to_delete = []
# 用于保存要删除的段落
paragraphs_to_delete = []

# 遍历文档中的所有表格
for table in doc.tables:
    for row in table.rows:
        for cell in row.cells:
            # 查找单元格中的软回车(\n)
            if '\n' in cell.text:
                # 分割单元格文本,找到软回车的位置
                texts = cell.text.split('\n')

                # 清空原始单元格文本
                cell.text = texts[0]

                # 在软回车的位置插入新的段落
                for text in texts[1:]:
                    new_paragraph = cell.add_paragraph(text)
                    new_paragraph.style = cell.paragraphs[0].style  # 保留原始样式

# 删除原来的单元格文本中的软回车
for cell in cells_to_delete:
    cell.text = cell.text.replace('\n', '')


# 遍历文档中的所有段落
for paragraph in list(doc.paragraphs):  
    # 查找段落中的软回车(\n)
    if '\n' in paragraph.text:
        # 分割段落文本,找到软回车的位置
        texts = paragraph.text.split('\n')
        
        # 首先处理第一个文本块
        paragraph.text = texts[0]
        
        # 在软回车的位置插入新的段落
        for text in texts[0:]:
            new_paragraph = paragraph.insert_paragraph_before(text)
            new_paragraph.style = paragraph.style  # 保留原始样式
        
        # 将原始段落添加到待删除列表中
        paragraphs_to_delete.append(paragraph)
        

# 删除原来的段落
for paragraph in paragraphs_to_delete:
    paragraph._element.getparent().remove(paragraph._element)

doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\测试word换行符\234.docx')


替换前——段落和表格里都有手动换行福

替换后——无论段落还是表格里的手动换行符都变成了回车符

存在问题:

加粗的“中国人”在替换后没有加粗(格式消失)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Prometheus 轻量化部署和使用

文章目录 说明Prometheus简介Grafana简介prometheus和Grafana的关系环境准备&#xff08;docker&#xff09;docker安装时间时区问题&#xff08;我的代码中&#xff09;dockers镜像加速和服务器时区设置 数据库准备(mysql、redis)mysql配置redis配置 Prometheus、grafana下载和…

4-如何进行细分市场分析-03 竞争者分析

任何一个行业肯定都是有很多竞争者&#xff0c;我们如何判断这些竞争者对我们有什么样的威胁、什么样的机会、什么样的影响&#xff0c;我们需要去分析这些竞争者。 行业竞争格局如何分析&#xff1f; 我们可以从一些基本指标来入手&#xff0c;如市场集中度、行业利润率。 竞…

Win10系统使用IIS服务搭建WebDAV网站结合内网穿透公网访问本地文件

文章目录 推荐1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功总结&#xff1a; 推荐 前些天发现了一个巨牛的人工智能…

短剧小程序软件开发首页接口转发到Selectpage

工具&#xff1a;用的是uniapp开发 技术栈&#xff1a;vue、nide..js、云开发 用时&#xff1a;20工作天 软件&#xff1a;Hb、微信开发者工具 <?php namespace app\api\controller; use app\common\controller\Api; /** * 首页接口 */ class Index extends Api { …

算法思想总结:滑动窗口算法

创作不易&#xff0c;感谢三连 一.长度最小的数组 . - 力扣&#xff08;LeetCode&#xff09;长度最小的数组 class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int lenINT_MAX,nnums.size(),sum0;//len必须要给一个很大的数&#xf…

【LeetCode每日一题】2684. 矩阵中移动的最大次数

文章目录 [2684. 矩阵中移动的最大次数](https://leetcode.cn/problems/maximum-number-of-moves-in-a-grid/)思虑&#xff1a;代码&#xff1a; 2684. 矩阵中移动的最大次数 思虑&#xff1a; 1.将第一列的所有行坐标&#xff0c;用IntStream 来生成一个范围 [0, m) 内的整数…

reloading,一个很实用的Python库!

Python是一门非常流行的编程语言&#xff0c;它的广泛应用和丰富的第三方库使得开发者们能够轻松完成各种任务。reloading是Python中一个强大的库&#xff0c;它能够在程序运行时重新加载修改过的模块&#xff0c;为开发者提供了便利和灵活性。本文将全面介绍reloading库&#…

警惕MKP勒索病毒,您需要知道的预防和恢复方法。

引言&#xff1a; 在网络世界中&#xff0c;.mkp勒索病毒是一股威胁不可小觑的黑暗势力。它以其毒辣的加密手段威胁着我们的数据安全。本文将深入介绍.mkp勒索病毒&#xff0c;揭示如何恢复被其加密的数据文件&#xff0c;并分享一些预防措施&#xff0c;助您在数字世界中安全…

整数和浮点数在内存中存储及题目

一、整数在内存中存储 整数的2进制表⽰⽅法有三种&#xff0c;即原码、反码和补码。三种表⽰⽅法均有符号位和数值位两部分&#xff0c;符号位都是⽤0表⽰“正”&#xff0c;⽤1表⽰“负”&#xff0c;⽽数值位最⾼位的⼀位是被当做符号位&#xff0c;剩余的都是数值位 正整数…

使用ChatGPT高效完成简历制作[中篇]-有爱AI实战教程(五)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 导读&#xff1a;在使用 ChatGPT 时&#xff0c;当你给的指令越精确&#xff0c;它的回答会越到位&#xff0c;举例来说&#xff0c;假如你要请它帮忙写文案&#xff0c;如果没…

【JS进阶】第一天

参考视频——黑马程序员 JavaScript 进阶 - 第 1 天 学习作用域、变量提升、闭包等语言特征&#xff0c;加深对 JavaScript 的理解&#xff0c;掌握变量赋值、函数声明的简洁语法&#xff0c;降低代码的冗余度。 理解作用域对程序执行的影响能够分析程序执行的作用域范围理解闭…

后端程序员入门react笔记(八)-redux的使用和项目搭建

一个更好用的文档 添加链接描述 箭头函数的简化 //简化前 function countIncreAction(data) {return {type:"INCREMENT",data} } //简化后 const countIncreAction data>({type:"INCREMENT",data })react UI组件库相关资料 组件库连接和推荐 antd组…

electron 学习

const { app, BrowserWindow } require(electron); const path require(path); function createWindow () {let mainWin new BrowserWindow({x: 100,y: 100,show:false, // 默认不显示窗体width: 800,height: 800,maxHeight: 1000,maxWidth: 1000,minHeight: 400,minWidth: …

Linux学习(4)——使用编辑器

1.gedit编辑器 简单易懂&#xff0c;依赖图形界面。可以使用ctrlc ctrlv等快捷键&#xff0c;ctrls进行保存&#xff0c;与windows系统中相类似。 2.vi/vim编辑器 vi/vim可以直接通过控制台的终端完成文本的编辑&#xff0c;不依赖图形界面&#xff0c;使用范围更广。它的编辑…

安装Pytorch——CPU版本

安装Pytorch——CPU版本 1. 打开pytorch官网2. 选择pip安装pytorch-cpu3.复制安装命令4. 在cmd命令窗口&#xff0c;进入你的虚拟环境4.1 创建虚拟环境4.2 进行安装 5. 安装成功6. 进行测试——如下面步骤&#xff0c;如图6.1 输入 python6.2 输入 import torch6.2 输入 print …

【Web开发】CSS教学(超详细,满满的干货)

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;【Web开发】CSS教学(超详细,满满的干货) &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 CSS一. 什么是CSS?1.1 基本语法规范1.2 引入方式1.3 规范 二. CSS选…

Spring Web MVC入门(3)

学习Spring MVC 请求 传递JSON数据 JSON概念 JSON: JavaScript Object Natation JSON是一种轻量的数据交互格式, 采用完全独立于编程语言的文本格式来存储和标识数据. 简单来说, JSON是一种数据格式, 有自己的格式和语法, 使用文本来表示对象或数组的信息, 因此JSON的本质…

下载、安装Maven

官网搜索Maven 进入官网 点击下载

蓝桥杯每日一题 走迷宫bfs 超超详细解释!!!

昨天学习了bfs的基本概念&#xff0c;今天来做一道经典习题练练手吧&#xff01; bfs常用的两类题型 1.从A出发是否存在到达B的路径(dfs也可) 2.从A出发到B的最短路径&#xff08;数小:<20才能用dfs&#xff09; 遗留的那个问题的答案- 题目&#xff1a;走迷宫 答案&…

在根据卷积核大小计算padding时要遵循什么原则

在计算卷积操作中的 padding 大小时&#xff0c;通常有以下原则&#xff1a; 保持输入输出尺寸相同&#xff1a;如果希望卷积操作前后输入和输出的尺寸保持不变&#xff0c;可以使用以下公式计算 padding 大小&#xff1a; 其中&#xff0c;filter size 是卷积核的大小。这个…
最新文章