RAG 分塊中表格填補簡明示例:Markdown、HTML、Excel、Doc

表格填補是RAG分塊中常見的需求,但不同格式的表格處理方式有所不同。本文將對 Markdown、HTML、Excel 的合并單元格進行說明,并給出 Python 示例,演示如何解析和填補。

1. Markdown 表格

Markdown 只能用空值表示合并單元格。(只有列方向的合并表格

示例

| 姓名 | 科目 | 分數 |
|------|------|------|
| 張三 | 數學 | 90   |
|      | 語文 | 85   |
| 張三 | 英語 | 88   |
| 李四 | 數學 | 92   |
|      | 語文 | 80   |

Python 解析

import pandas as pd
from io import StringIOmarkdown_table = """
姓名|科目|分數
張三|數學|90
|語文|85
張三|英語|88
李四|數學|92
|語文|80
"""df = pd.read_csv(StringIO(markdown_table), sep="|")
df['姓名'] = df['姓名'].ffill()
print(df)

輸出

    姓名  科目  分數
0   張三  數學   90
1   張三  語文   85
2   張三  英語   88
3   李四  數學   92
4   李四  語文   80

2. HTML 表格

HTML 可以用 rowspancolspan進行填補

示例

<table><tr><td rowspan="2">張三</td><td>數學</td><td>90</td></tr><tr><td>語文</td><td>85</td></tr><tr><td rowspan="2">李四</td><td>數學</td><td>92</td></tr><tr><td>語文</td><td>80</td></tr>
</table>

Python 解析(BeautifulSoup + 填補 rowspan)

from bs4 import BeautifulSouphtml = """
<table><tr><td rowspan="2">張三</td><td>數學</td><td>90</td></tr><tr><td>語文</td><td>85</td></tr><tr><td rowspan="2">李四</td><td>數學</td><td>92</td></tr><tr><td>語文</td><td>80</td></tr>
</table>"""soup = BeautifulSoup(html, "html.parser")
rows = soup.find_all("tr")# 構建空表格
table = []
for r, row in enumerate(rows):cols = row.find_all("td")current_row = []for col in cols:value = col.get_text()rowspan = int(col.get("rowspan", 1))colspan = int(col.get("colspan", 1))current_row.append({"value": value, "rowspan": rowspan, "colspan": colspan})table.append(current_row)# 計算總列數
max_cols = max(sum(cell["colspan"] for cell in row) for row in table)# 初始化填補后的表格
filled_table = [[None]*max_cols for _ in range(len(table))]# 填充邏輯
for r, row in enumerate(table):c_idx = 0for cell in row:# 找到當前行可用位置while filled_table[r][c_idx] is not None:c_idx += 1# 填充 rowspan 和 colspanfor i in range(cell["rowspan"]):for j in range(cell["colspan"]):filled_table[r+i][c_idx+j] = cell["value"]c_idx += cell["colspan"]# 打印結果
for r in filled_table:print(r)

輸出

['張三', '數學', '90']
['張三', '語文', '85']
['李四', '數學', '92']
['李四', '語文', '80']

3. Excel 表格

Excel 合并單元格讀取后用 pandas 填補即可。

姓名科目分數
張三 (合并兩行)數學90
語文85
李四 (合并兩行)數學92
語文80
import pandas as pddf = pd.read_excel("example.xlsx")
df['姓名'] = df['姓名'].ffill()
print(df)

輸出

     姓名  科目  分數
0   張三  數學   90
1   張三  語文   85
2   李四  數學   92
3   李四  語文   80

4. Word 表格合并單元格特點

在 Word 文檔里,表格同樣支持“合并單元格”,類似于 Excel,但它有自己的特點:

  • 可以 合并行(rowspan)合并列(colspan)

  • 合并單元格的內容只保留左上角的單元格,其余單元格為空

  • Python 讀取 Word 表格通常用 python-docx

  • 讀取后的表格數據需要手動填補合并單元格的空值,類似 Excel

示例 Word 表格

姓名科目分數
張三 (合并兩行)數學90
語文85
李四 (合并兩行)數學92
語文80

Python 解析 Word 表格并填補

from docx import Documentdoc = Document("example.docx")
table = doc.tables[0]# 先讀取表格內容
data = []
for row in table.rows:data.append([cell.text.strip() if cell.text.strip() else None for cell in row.cells])# 填補合并單元格(垂直填充)
for col in range(len(data[0])):last_val = Nonefor row in data:if row[col]:last_val = row[col]else:row[col] = last_valfor row in data:print(row)

輸出

['張三', '數學', '90']
['張三', '語文', '85']
['李四', '數學', '92']
['李四', '語文', '80']

結論:

  • Markdown:用空值表示合并單元格,再 ffill()

  • HTML:用 rowspan,需要邏輯填補

  • Excel:合并單元格讀取后是 NaN,用 ffill()

  • Word 表格合并單元格讀取后非首單元格為 None

  • 可以用 逐列垂直填充(類似 Excel ffill()

  • Python 最常用庫是 python-docx

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93696.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93696.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93696.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IDEA創建一個VUE項目

由于新手學習VUE&#xff0c;所以使用手動初始化項目 步驟&#xff1a; 創建項目文件夾&#xff1a;在 IDEA 中點擊 File > New > Project&#xff0c;選擇 Empty Project&#xff0c;指定項目路徑。初始化 npm&#xff1a;在終端中&#xff1a;npm init -y安裝vue&#…

Chrome插件開發實戰:todoList 插件

以下是一個適合小團隊自用的 Chrome TodoList 插件開發示例&#xff0c;包含基礎功能&#xff08;增刪改查、本地存儲、統計&#xff09;和簡潔的交互設計。代碼結構清晰&#xff0c;適合新手學習或快速上手。 一、項目準備 創建插件項目目錄 todo-list-extension&#xff0c;…

【Redis數據庫開啟SSL加密】【小白指南】【生產環境可用】附帶Docker服務器配置和python連接Redis數據庫代碼(加密通訊版)

【Redis數據庫開啟SSL加密】【填坑指南】附帶服務器配置和python連接測試代碼 本教程轉為小白提供設置Redis安全訪問&#xff0c;自簽名證書進行安全訪問你的Redis數據庫&#xff0c;輕松實現安全訪問和保護數據庫不被非法入侵。 本文原創&#xff0c;轉載請注明出處&#xff0…

筆記本電腦鍵盤失靈【已解決】

配置環境硬件詳情筆記本電腦聯想拯救者y7000 2019 PG0&#xff08;已更新為win11&#xff09;外接鍵盤colorful ckb-p100問題今天筆記本開機后&#xff0c;進入登錄頁面輸入密碼&#xff0c;突然發現筆記本自帶鍵盤&#xff08;我通常不用外接鍵盤&#xff09;的鍵失靈了&#…

postgresql運維問題解決:PG集群備節點狀態異常告警處理

小亦平臺會持續給大家科普一些運維過程中常見的問題解決案例&#xff0c;運維朋友們可以在常見問題及解決方案專欄查看更多案例 問題概述&#xff1a; 故障&#xff1a; pg數據庫備節點狀態異常現象&#xff1a; 一般為集群間心跳超時導致,現象為集群有fail-count失敗數告警&…

Maven 開發實踐

文章目錄1. 搭建私服&#xff08;windows)2.上傳依賴3.多個遠程倉庫配置4.其它1. 搭建私服&#xff08;windows) 軟件下載 https://help.sonatype.com/en/download.html修改端口 etc/nexus-default.properties啟動程序 管理員身份進入進入bin目錄下執行.\nexus.exe /run創建Ma…

設計心得——如何架構選型

一、架構的作用 可能對于很多的公司&#xff0c;其實架構本身的重要性并不大。大家一定明白這回事&#xff0c;架構在實際的開發&#xff0c;在大多數的場景下其實用處并沒有書籍和資料中講的那樣重要&#xff0c;甚至是可有可無。這樣講是不有些可笑&#xff1f;是不是覺得挺意…

vba學習系列(12)--反射率通過率計算復雜度優化25/8/17

系列文章目錄 文章目錄系列文章目錄前言一、反射率通過率1.整體通過率2.整體通過率3.客戶工藝匹配4.機臺通過率分析5.鏡片通過率罩次分析分析1.1分析1.26.鏡片通過率圈數分析分析1.1分析1.28.鏡筒通過率圈數分析分析1.1分析1.29.鏡筒通過率罩次分析分析1.2總結前言 一、反射率通…

Microsoft WebView2

運行效果 代碼如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Form…

GitCode 疑難問題診療:全方位指南

一、問題診斷與解決框架1.1 通用問題排查流程在面對 GitCode 問題時&#xff0c;遵循一套科學的排查流程至關重要。首先&#xff0c;詳細記錄問題出現時的具體操作步驟與相關報錯信息&#xff0c;這有助于精準定位問題根源。例如&#xff0c;若在執行git push命令時出現錯誤&am…

AMD Ryzen AI Max+ 395四機并聯:大語言模型集群推理深度測試

本文介紹使用四塊Framework主板構建AI推理集群的完整過程&#xff0c;并對其在大語言模型推理任務中的性能表現進行了系統性評估。該集群基于AMD Ryzen AI Max 395處理器&#xff0c;采用mini ITX規格設計&#xff0c;可部署在10英寸標準機架中。 Jeff Geerling大佬還開發了名…

深度學習·GFSS

GFSS General Few-Shot Segmentation 任務實現方式與zero-shot有所不同本篇論文只涉及同一個模態(圖像)&#xff0c;訓練過程中&#xff0c;novel class有幾個圖像提供&#xff0c;提供k個就稱之為k-shot。先從圖像中提取class prototype&#xff0c;然后這個原型向量作為查詢&…

Transformer架構的數學本質:從注意力機制到大模型時代的技術內核

系列專欄推薦&#xff1a;零基礎學Python&#xff1a;Python從0到100最新最全教程 深入淺出講解神經網絡原理與實現&#xff0c;從基礎的多層感知機到前沿的Transformer架構。包含完整的數學推導、代碼實現和工程優化技巧。 寫在前面&#xff1a;為什么理解Transformer如此重要…

最新微信小程序一鍵獲取真實微信頭像和昵稱方法

使用公開免費插件&#xff0c;快速實現獲取用戶頭像和昵稱&#xff0c;已附uniapp、微信開發工具開發詳細教程。前言為了保護用戶隱私&#xff0c;wx.getUserInfo、wx.getUserProfile都沒法獲取到用戶頭像和昵稱了&#xff0c;只能通過設計用戶主動選擇/輸入形式&#xff0c;操…

路由器配置之模式

文章目錄配置路由器時&#xff0c;有一個模式選擇最佳實踐各個選項的區別11b only11g only11n only11bg mixed11bgn mixed配置路由器時&#xff0c;有一個模式選擇 最佳實踐 ? 追求速度&#xff1a;選 11n only&#xff08;需所有設備支持&#xff09;。 ? 兼容性優先&…

評測系統構建

合成數據更“科研驅動”&#xff0c;強調 controllability 和 generalization evaluation&#xff1a; 之前往往直接采用經典數據集如OGB和OGB-large提供的經典數據集和數據劃分思路 該思想從現有真實數據中學習參數&#xff0c;再構造類似但分布略異的數據集&#xff0c;驗證模…

【計算機網絡面試】TCP/IP網絡模型有哪幾層

參考&#xff1a; 2.1 TCP/IP 網絡模型有哪幾層&#xff1f; | 小林coding | Java面試學習 以下為自己做的筆記 應用層 專注于為用戶提供應用功能&#xff0c;如HTTP、FTP、Telnet、DNS、SMTP等。應用層不關心用戶是怎么傳輸的&#xff0c;當兩個設備間的應用需要通信時&…

3 種方式玩轉網絡繼電器!W55MH32 實現網頁 + 阿里云 + 本地控制互通

目錄 1 前言 2 項目環境 2.1 硬件準備 2.2 軟件準備 2.3 方案圖示 3 例程修改 4 功能驗證 5. 總結 1 前言 HTTP&#xff08;超文本傳輸協議&#xff0c;HyperText Transfer Protocol&#xff09;是一種用于分布式、協作式、超媒體信息系統的應用層協議&#xff0c; 基于 TCP/IP…

第四篇:科技封鎖與文化滲透篇——T-501 與 M-208 雙引擎布局(節奏增強版)

科技封鎖與文化滲透篇——T-501 與 M-208 雙引擎布局&#xff08;節奏增強版&#xff09; 引子 在全球競爭中&#xff0c;光有資本和市場遠遠不夠。 ? 科技封鎖&#xff08;T-501&#xff09;&#xff1a;通過技術標準、專利網絡、供應鏈控制&#xff0c;讓對手進入成本極高的…

python實現梅爾頻率倒譜系數(MFCC) 除了傅里葉變換和離散余弦變換

語音識別第4講&#xff1a;語音特征參數MFCC https://zhuanlan.zhihu.com/p/88625876/ Speech Processing for Machine Learning: Filter banks, Mel-Frequency Cepstral Coefficients (MFCCs) and What’s In-Between https://haythamfayek.com/2016/04/21/speech-processing-…