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と更にモヤモヤ感が増加。