2
0

More than 3 years have passed since last update.

13. col1.txtとcol2.txtをマージ

Posted at

13. col1.txtとcol2.txtをマージ

12で作ったcol1.txtとcol2.txtを結合し,元のファイルの1列目と2列目をタブ区切りで並べたテキストファイルを作成せよ.確認にはpasteコマンドを用いよ.

Go

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    //  読み込みファイルを指定
    wname := "col.txt"
    r1name := "col1.txt"
    r2name := "col2.txt"

    //  読み込むファイルを開く
    w, err := os.Create(wname)
    if err != nil {
        fmt.Printf("os.Open: %#v\n",err)
        return
    }
    defer w.Close() //  終了時にクリーズ

    //  1列目の保存ファイルを作成
    r1, err := os.Open(r1name)
    if err != nil {
        fmt.Printf("os.Open: %#v\n",err)
        return
    }
    defer r1.Close() // 終了時にクリーズ

    //  2列目の保存ファイルを作成
    r2, err := os.Open(r2name)
    if err != nil {
        fmt.Printf("os.Open: %#v\n",err)
        return
    }
    defer r2.Close() // 終了時にクリーズ

    //  スキャナライブラリを作成
    scanner1 := bufio.NewScanner(r1)
    scanner2 := bufio.NewScanner(r2)

    //  データを1行読み込み
    for scanner1.Scan() {
        scanner2.Scan()
        w.WriteString(scanner1.Text() + "\t" + scanner2.Text() + "\n")
    }

    //  エラーが有ったかチェック
    if err = scanner1.Err(); err != nil {
        fmt.Printf("scanner1.Err: %#v\n",err)
        return
    }

    //  エラーが有ったかチェック
    if err = scanner2.Err(); err != nil {
        fmt.Printf("scanner2.Err: %#v\n",err)
        return
    }
}

python

# 出力ファイルを開く
with open("col.txt", "w") as w:
    # 1つめの読み込みファイルを開く
    with open("col1.txt", "r") as r1:
        # 2つめの読み込みファイルを開く
        with open("col2.txt", "r") as r2:
            # 一行ずつ読み込む
            for data1 in r1:
                # 2つめのファイルを読み込む
                data2 = r2.readline()

                # col1.txt のデータと col2.txt のデータ を TAB 区切りで col.txt へ出力
                w.writelines(data1.strip() + "\t" + data2.strip() + "\n")

Javascript

// モジュールの読み込み
var fs = require("fs");
var col = [];

//  col1.txt,col2.txt のテキストファイルを読み込み
var col1Text = fs.readFileSync("col1.txt", 'utf-8');
var col2Text = fs.readFileSync("col2.txt", 'utf-8');

//  改行で文字列を分割
var col1 = col1Text.split('\n');
var col2 = col2Text.split('\n');

//  項目数ループ
for (i=0;i<col1.length;i++) {
    //  項目をTAB区切りで結合
    col.push(col1[i] + "\t" + col2[i]);
}

//  col.txt へ改行で連結したテキストを出力
fs.writeFileSync("col.txt",col.join('\n'));

まとめ

Javascirptこれだけバッファ処理へで書いてる。
3ファイルを処理となんかソースがスッキリしない・・・が出力2と更にモヤモヤ感が増加。

トップ

2
0
2

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
0