0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでTXTファイルをCSV形式に変換する

0
Posted at

データ処理・分析やレポート作成業務において、TXTテキストファイルは形式の柔軟性から広く活用されています。一方、CSV形式は構造化データに対応し、Excel・Pandas・各種データベースから容易に読み込み・解析可能な強みから、データ連携における標準的な形式として定着しています。

本記事ではPythonと無料ライブラリ「Free Spire.XLS」を活用し、TXTをCSVへ効率的に変換する実装方法を解説します。基本的な単純変換や区切り文字のカスタマイズといった主要ケースに対応しており、プログラミング未経験の方でもスムーズに活用できます。

記事目次

  1. 環境準備:無料Pythonライブラリのインストール
  2. 基本実装:カンマ区切りTXTのCSV変換
  3. 応用ケース:区切り文字の独自設定
  4. 拡張機能:複数TXTファイルの一括変換

1. 環境準備:無料Pythonライブラリのインストール

Free Spire.XLS for Pythonは無料で利用可能なExcel・CSV操作用ライブラリです。
ローカルにMicrosoft Excelをインストールせずとも、ファイル形式変換やデータ入出力処理を実行できます。ただし無料版には、出力ページ数・処理量に制限が設けられています。

1.1 pipインストールコマンド

pipから簡単に導入でき、Python 3.6以上のバージョンに対応しています。

pip install Spire.Xls.Free

1.2 インストール失敗時の対処法

導入が正常に完了しない場合は、下記の方法をお試しください。

2. 基本実装:カンマ区切りTXTのCSV変換

2.1 利用ケース

変換対象のdata.txtは、カンマを区切り文字とした以下の内容と仮定します。

氏名,年齢,都市,職業
佐藤健,25,東京,プログラマー
鈴木悠斗,30,大阪,プロダクトマネージャー
高橋美桜,28,横浜,Webデザイナー

2.2 Pythonコード実装

from spire.xls import *
from spire.xls.common import *

def txt_to_csv_basic(txt_path, csv_path):
    # 1. ワークブックオブジェクトを生成
    workbook = Workbook()
    # 2. 先頭のワークシートを取得
    worksheet = workbook.Worksheets[0]
    
    # 3. TXTファイルをUTF-8で読み込み
    with open(txt_path, 'r', encoding='utf-8') as f:
        lines = f.readlines()
    
    # 4. TXTの内容をワークシートへ出力
    row_index = 1  # Spire.XLSの行番号は1から開始
    for line in lines:
        # 改行コードを除去し、カンマでデータ分割
        row_data = line.strip().split(',')
        col_index = 1
        for cell_value in row_data:
            # 各セルにデータを記載
            worksheet.Range[row_index, col_index].Text = cell_value
            col_index += 1
        row_index += 1
    
    # 5. CSV形式でファイル保存
    workbook.SaveToFile(csv_path, FileFormat.CSV)
    workbook.Dispose() # リソース解放
    print(f"基本変換処理が完了しました。CSV出力先:{csv_path}")

# メイン実行
if __name__ == "__main__":
    txt_file = "data.txt"
    csv_file = "output_basic.csv"
    txt_to_csv_basic(txt_file, csv_file)

変換後のCSVファイル

上記TXTの内容を基に、標準的なCSVファイルが自動生成されます。
TXT-CSV.png

2.3 コード解説

  • Workbook():Excelワークブックオブジェクトを作成し、Spire.XLS処理の基盤となります。
  • Worksheets[]:任意のワークシートを呼び出し、外部データの格納先として使用します。
  • TXTを1行ずつ読み込み、区切り文字で分割後、セル単位でシートへ出力します。
  • SaveToFile():引数にFileFormat.CSVを指定することで、シートデータをCSVファイルとして出力可能です。

3. 応用ケース:区切り文字の独自設定

data_tab.txtタブ文字でデータ区切りされている場合:

氏名	年齢	都市	職業
佐藤健	25	東京	プログラマー
鈴木悠斗	30	大阪	プロダクトマネージャー

分割処理の記述を\tに変更するだけで対応可能です。

from spire.xls import *
from spire.xls.common import *

def txt_to_csv_tab_separator(txt_path, csv_path):
    workbook = Workbook()
    worksheet = workbook.Worksheets[0]
    
    with open(txt_path, 'r', encoding='utf-8') as f:
        lines = f.readlines()
    
    row_index = 1
    for line in lines:
        row_data = line.strip().split('\t')  # タブ文字で分割
        col_index = 1
        for cell_value in row_data:
            worksheet.Range[row_index, col_index].Text = cell_value
            col_index += 1
        row_index += 1
    
    workbook.SaveToFile(csv_path, FileFormat.CSV)
    workbook.Dispose()
    print(f"タブ区切り形式の変換が完了しました。出力先:{csv_path}")

# 関数実行
txt_to_csv_tab_separator("data_tab.txt", "output_tab.csv")

4. 拡張機能:複数TXTファイルの一括変換

フォルダ内の全TXTファイルをまとめてCSVへ変換したい場合は、osモジュールを併用します。

import os

def batch_txt_to_csv(txt_folder, csv_folder):
    # 出力用フォルダが存在しない場合、新規作成
    if not os.path.exists(csv_folder):
        os.makedirs(csv_folder)
    
    # 対象フォルダ内のファイルを走査
    for file_name in os.listdir(txt_folder):
        if file_name.endswith(".txt"):
            txt_path = os.path.join(txt_folder, file_name)
            # 拡張子を置換しCSVファイル名を生成
            csv_name = file_name.replace(".txt", ".csv")
            csv_path = os.path.join(csv_folder, csv_name)
            # 基本変換関数を呼び出し
            txt_to_csv_basic(txt_path, csv_path)
    
    print(f"一括変換が完了しました。全CSVファイル出力先:{csv_folder}")

# 実行例:txt_files内のTXTをcsv_filesへ一括出力
batch_txt_to_csv("txt_files", "csv_files")

まとめ

本稿ではFree Spire.XLS for Pythonを用い、TXTからCSVへの多様な変換処理を実装しました。
基本的な単独変換・区切り文字のカスタマイズ・複数ファイルの一括処理に対応しており、従来の手法と比較してコードが簡潔で動作も安定しています。

また本ライブラリはTXT⇄CSVの変換に限らず、CSV・Excel・TXT間の相互フォーマット変換にも対応し、業務における多様なデータ処理ニーズに対応できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?