最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python讀取多個TXT文件并提取指定列寫入Excel

 更新時間:2026年01月18日 16:07:58   作者:普通網友  
這篇文章主要介紹了如何使用Python的pandas和openpyxl庫批量讀取指定文件夾下的TXT文件,提取指定列的數(shù)據(jù),并將結果寫入Excel文件,支持按文件分Sheet或合并到單個Sheet,需要的朋友可以參考下

本文將實現(xiàn)批量讀取指定文件夾下的所有 TXT 文件,提取每個文件中指定列的所有值,并將結果寫入 Excel(支持按文件分 Sheet、或合并到單個 Sheet)。核心使用pandas(高效處理文本 / 表格數(shù)據(jù))和openpyxl(Excel 寫入引擎),兼顧簡潔性和通用性。

一、前置準備

1. 安裝依賴庫

執(zhí)行以下命令安裝所需庫:

pip install pandas openpyxl 
  • pandas:快速讀取 TXT 文件、提取列數(shù)據(jù);
  • openpyxl:支持寫入.xlsx 格式 Excel 文件(pandas 默認依賴)。

2. 明確 TXT 文件格式

需先確認 TXT 文件的分隔符(常見類型):

  • 空格分隔(如1 張三 20);
  • 制表符分隔(\t,如1\t張三\t20);
  • 逗號分隔(如1,張三,20);
  • 其他分隔符(如|、;)。

二、核心代碼實現(xiàn)

場景 1:所有 TXT 結構一致,提取指定列(合并到 Excel 單個 Sheet)

適用于所有 TXT 文件的列數(shù)、列順序完全相同,提取同一列(如第 2 列)并匯總到 Excel 的一個 Sheet 中,標注數(shù)據(jù)來源文件。

import os
import pandas as pd

def txt_col_to_excel(
    txt_folder,       # TXT文件所在文件夾路徑
    excel_path,       # 輸出Excel文件路徑(如"result.xlsx")
    target_col_index, # 要提取的列索引(從0開始,如第2列填1)
    sep="\s+",        # TXT文件分隔符,默認匹配任意空格(含多個空格/制表符)
    encoding="utf-8"  # TXT文件編碼(常見gbk/utf-8)
):
    """
    批量讀取TXT文件,提取指定列寫入Excel單個Sheet
    """
    # 初始化匯總數(shù)據(jù)列表
    all_data = []
    
    # 遍歷文件夾下所有TXT文件
    for filename in os.listdir(txt_folder):
        # 僅處理.txt后綴文件
        if not filename.endswith(".txt"):
            continue
        
        # 拼接完整文件路徑
        txt_path = os.path.join(txt_folder, filename)
        print(f"正在處理文件:{filename}")
        
        try:
            # 1. 讀取TXT文件為DataFrame
            # sep="," 對應逗號分隔;sep="\t" 對應制表符;sep="|" 對應豎線分隔
            df = pd.read_csv(
                txt_path,
                sep=sep,
                encoding=encoding,
                header=None,  # TXT無表頭時設為None,有表頭則設為0
                on_bad_lines="skip"  # 跳過格式錯誤的行
            )
            
            # 2. 提取指定列,添加"來源文件"列便于溯源
            target_col = df.iloc[:, target_col_index]  # iloc[:,n] 提取第n列(索引從0開始)
            temp_df = pd.DataFrame({
                "來源文件": filename,
                "目標列數(shù)據(jù)": target_col
            })
            
            # 3. 追加到匯總列表
            all_data.append(temp_df)
        
        except Exception as e:
            print(f"處理文件 {filename} 失?。簕e}")
            continue
    
    # 4. 合并所有數(shù)據(jù)并寫入Excel
    if all_data:
        final_df = pd.concat(all_data, ignore_index=True)
        # index=False 不寫入行索引;engine="openpyxl" 支持.xlsx格式
        final_df.to_excel(excel_path, sheet_name="匯總數(shù)據(jù)", index=False, engine="openpyxl")
        print(f"所有數(shù)據(jù)已寫入Excel:{excel_path}")
    else:
        print("未找到有效TXT文件或提取數(shù)據(jù)為空!")

# 示例調用
if __name__ == "__main__":
    # 配置參數(shù)(根據(jù)實際情況修改)
    TXT_FOLDER = r"E:\test_txt"  # TXT文件所在文件夾(絕對路徑)
    EXCEL_PATH = "提取結果.xlsx"  # 輸出Excel路徑
    TARGET_COL_INDEX = 1         # 提取第2列(索引從0開始)
    SEP = "\s+"                  # TXT分隔符(如逗號分隔則改為",")
    ENCODING = "utf-8"           # 若TXT亂碼,嘗試改為"gbk"
    
    # 執(zhí)行函數(shù)
    txt_col_to_excel(TXT_FOLDER, EXCEL_PATH, TARGET_COL_INDEX, SEP, ENCODING)

場景 2:按 TXT 文件分 Sheet 寫入 Excel

若希望每個 TXT 文件的指定列單獨存入 Excel 的一個 Sheet(Sheet 名 = TXT 文件名),修改核心邏輯如下:

import os
import pandas as pd

def txt_col_to_excel_by_sheet(
    txt_folder,
    excel_path,
    target_col_index,
    sep="\s+",
    encoding="utf-8"
):
    # 創(chuàng)建Excel寫入器
    with pd.ExcelWriter(excel_path, engine="openpyxl") as writer:
        for filename in os.listdir(txt_folder):
            if not filename.endswith(".txt"):
                continue
            
            txt_path = os.path.join(txt_folder, filename)
            print(f"正在處理文件:{filename}")
            
            try:
                df = pd.read_csv(
                    txt_path,
                    sep=sep,
                    encoding=encoding,
                    header=None,
                    on_bad_lines="skip"
                )
                
                # 提取指定列,重命名列名
                target_df = df.iloc[:, [target_col_index]]  # 保留列結構
                target_df.columns = ["目標列數(shù)據(jù)"]
                
                # Sheet名:去掉.txt后綴
                sheet_name = filename.replace(".txt", "")
                # 寫入對應Sheet
                target_df.to_excel(writer, sheet_name=sheet_name, index=False)
            
            except Exception as e:
                print(f"處理文件 {filename} 失?。簕e}")
                continue
    
    print(f"所有文件已分Sheet寫入Excel:{excel_path}")

# 示例調用
if __name__ == "__main__":
    TXT_FOLDER = r"E:\test_txt"
    EXCEL_PATH = "按文件分Sheet結果.xlsx"
    TARGET_COL_INDEX = 1
    SEP = "\s+"
    ENCODING = "utf-8"
    
    txt_col_to_excel_by_sheet(TXT_FOLDER, EXCEL_PATH, TARGET_COL_INDEX, SEP, ENCODING)

三、關鍵參數(shù)說明

參數(shù)說明
txt_folderTXT 文件所在文件夾路徑,建議用絕對路徑(如r"E:\data\txt"),避免路徑錯誤
target_col_index目標列索引(從 0 開始),例如第 1 列填 0、第 3 列填 2
sepTXT 分隔符:- 空格分隔:sep="\s+"(匹配 1 個或多個空格)- 制表符:sep="\t"- 逗號:sep=","- 豎線:`sep=""`
encodingTXT 文件編碼,Windows 默認 ANSI 對應gbk,UTF-8 文件填utf-8
header若 TXT 文件有表頭(如第一行是 "序號,姓名,年齡"),設為header=0,否則None

四、常見問題解決

1. TXT 讀取亂碼

  • 原因:編碼不匹配(如文件是 gbk 編碼,代碼用 utf-8 讀?。?/li>
  • 解決:將encoding改為gbk,或用chardet庫檢測文件編碼:
import chardet
with open("test.txt", "rb") as f:
    result = chardet.detect(f.read())
print("文件編碼:", result["encoding"])  # 輸出如gbk/utf-8

2. 列索引越界報錯

  • 原因:指定的target_col_index超過 TXT 文件的列數(shù);
  • 解決:先打印 TXT 文件的列數(shù),確認索引:
df = pd.read_csv("test.txt", sep="\s+", header=None)
print("TXT文件列數(shù):", df.shape[1])  # 輸出列數(shù),索引范圍0~列數(shù)-1

3. 部分行跳過(on_bad_lines="skip")

  • 原因:TXT 中部分行格式錯誤(如列數(shù)不一致);
  • 解決:若需保留所有行,可去掉該參數(shù),手動排查格式錯誤行。

五、擴展優(yōu)化

支持子文件夾遍歷:若 TXT 文件分布在子文件夾中,用os.walk替換os.listdir

for root, dirs, files in os.walk(txt_folder):
    for filename in files:
        if filename.endswith(".txt"):
            txt_path = os.path.join(root, filename)
            # 后續(xù)處理邏輯不變

數(shù)據(jù)去重 / 清洗:提取列后可添加去重邏輯:

target_df = target_df.drop_duplicates()  # 去重
target_df = target_df.dropna()           # 刪除空值行

追加寫入 Excel:若需向已有 Excel 追加數(shù)據(jù),可先讀取原有數(shù)據(jù),再合并后寫入。

該方案兼顧通用性和易用性,適用于大多數(shù)結構化 TXT 文件的列提取場景,可根據(jù)實際需求調整分隔符、編碼、列索引等參數(shù)。

以上就是Python讀取多個TXT文件并提取指定列寫入Excel的詳細內容,更多關于Python讀取多個TXT并寫入Excel的資料請關注腳本之家其它相關文章!

相關文章

  • Python實現(xiàn)單例模式的最佳方法匯總

    Python實現(xiàn)單例模式的最佳方法匯總

    單例模式是一種創(chuàng)建型設計模式,它確保一個類只有一個實例,并提供一個全局訪問點來獲取這個實例,在Python中,有多種方式可以實現(xiàn)單例模式,不同的實現(xiàn)方式各有優(yōu)缺點,適用于不同的場景,本文給大家匯總了最佳實現(xiàn)方法,需要的朋友可以參考下
    2025-07-07
  • 對DJango視圖(views)和模版(templates)的使用詳解

    對DJango視圖(views)和模版(templates)的使用詳解

    今天小編就為大家分享一篇對DJango視圖(views)和模版(templates)的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Django全局啟用登陸驗證login_required的方法

    Django全局啟用登陸驗證login_required的方法

    這篇文章主要介紹了Django全局啟用登陸驗證login_required的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • python實現(xiàn)搜索指定目錄下文件及文件內搜索指定關鍵詞的方法

    python實現(xiàn)搜索指定目錄下文件及文件內搜索指定關鍵詞的方法

    這篇文章主要介紹了python實現(xiàn)搜索指定目錄下文件及文件內搜索指定關鍵詞的方法,可實現(xiàn)針對文件夾及文件內關鍵詞的搜索功能,需要的朋友可以參考下
    2015-06-06
  • 使用PySide多線程處理圖形界面卡頓問題詳解

    使用PySide多線程處理圖形界面卡頓問題詳解

    這篇文章主要介紹了使用PySide多線程處理圖形界面卡頓問題,在制作圖形界面時,只用一個線程很容易導致卡頓無響應,一旦主線程被阻塞,那么整個圖形界面都會無法繼續(xù)使用,為了解決這個問題,就得使用多線程,需要的朋友可以參考下
    2025-04-04
  • Python使用py2neo操作圖數(shù)據(jù)庫neo4j的方法詳解

    Python使用py2neo操作圖數(shù)據(jù)庫neo4j的方法詳解

    這篇文章主要介紹了Python使用py2neo操作圖數(shù)據(jù)庫neo4j的方法,結合實例形式詳細分析了Python使用py2neo操作圖數(shù)據(jù)庫neo4j的具體步驟、原理、相關使用技巧與操作注意事項,需要的朋友可以參考下
    2020-01-01
  • python使用paramiko實現(xiàn)ssh的功能詳解

    python使用paramiko實現(xiàn)ssh的功能詳解

    這篇文章主要介紹了python使用paramiko實現(xiàn)ssh的功能詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • 基于python代碼實現(xiàn)簡易濾除數(shù)字的方法

    基于python代碼實現(xiàn)簡易濾除數(shù)字的方法

    今天小編就為大家分享一篇基于python代碼實現(xiàn)簡易濾除數(shù)字的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 決策樹剪枝算法的python實現(xiàn)方法詳解

    決策樹剪枝算法的python實現(xiàn)方法詳解

    這篇文章主要介紹了決策樹剪枝算法的python實現(xiàn)方法,結合實例形式較為詳細的分析了決策樹剪枝算法的概念、原理并結合實例形式分析了Python相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-09-09
  • redis-py在Python中連接與使用Redis全過程

    redis-py在Python中連接與使用Redis全過程

    文章介紹了如何在Python項目中安裝和使用redis-py庫連接Redis,包括連接測試、核心功能、高級用法和配置優(yōu)化,還提供了官方文檔和示例代碼的鏈接,幫助開發(fā)者進一步學習和深入應用Redis
    2025-11-11

最新評論

光泽县| 苗栗市| 驻马店市| 钟山县| 武威市| 无锡市| 佛教| 焉耆| 沙田区| 襄汾县| 凤冈县| 中西区| 区。| 彰化县| 花莲县| 洛川县| 疏附县| 辽阳市| 襄垣县| 辛集市| 和硕县| 金沙县| 田东县| 调兵山市| 浦城县| 长子县| 佛学| 澳门| 衡山县| 泌阳县| 苏州市| 岢岚县| 嘉黎县| 岗巴县| 大宁县| 中江县| 治县。| 敦化市| 永昌县| 建湖县| 五家渠市|