LoginSignup
2
5

More than 3 years have passed since last update.

[Python] csvファイルの区切り文字をタブ区切りに変換

Last updated at Posted at 2020-01-24

やりたいこと

  • csvファイルの区切り文字をタブ区切りに変換したい
  • ファイル中に住所等、カンマが含まれている場合にタブ区切りにした方が後続処理(例えばDBに取り込む等)がしやすくなる

ポイント

- csvモジュールをimportして使うと簡単

呼び出し側のプログラムの方でcsvモジュールをimport

  • defのファイルの最初でcsvモジュールをimport
  • with openで対象ファイルの読み書きを行う
  • 対象ファイルをカンマ区切りで読み込んで、タブく区切りで書き出す  → 対象ファイルに上書きされる
  • csv.readerを使って読み込んだら、行単位で配列に格納する
  • 書き込みは↑で読み込んだ配列をwriter.writerrows(配列名)で一気に書き出す  1行づつ書き込みたい時はwriter.writerrow(行列)で書き出せる
convertTav.py

def CsvToTsv(path):

    #読み込み用配列
    line = []

    #読み込み
    with open(path, "r", newline="") as f:
            #読み込みオブジェクト作成(カンマ区切り)
            reader = csv.reader(f, delimiter = ",")
            #読み込み
            line = [row for row in reader]

    #書き込み
    with open(path, "w", newline="") as f:
            #書き込みオブジェクト作成(タブ区切り)
            writer = csv.writer(f, delimiter = "\t")
            #まとめて書き込み
            writer.writerows(line)

追記

読み込みと書き込みでencodeを変換したい場合はopen時にencodingを指定する
(例)読み込み時 Shift-jis, 書き込み時 utf-8

convertTav.py
#読み込み
with open(path, "r", newline="", encoding="cp932") as f:

#書き込み
with open(path, "w", newline="", encoding="utf_8") as f:

Shift-jisではうまくいかず、cp932を指定することでうまくいった

2
5
4

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
2
5