open dan println di Julia


Tulisan kali ini mirip sekali dengan tulisan sebelumnya yakni fopen dan fprint di Octave di link berikut ini http://gear-second19.blogspot.jp/p/fopen-dan-fprintf.html. Namun, di sini kita tidak lagi menggunakan Octave, melainkan bahasa pemrograman Julia. Data yang akan kita proses pun sama persis dengan link yang diberikan di atas yakni "datagempa.csv"

Waktu Kejadian,Lintang,Bujur,Magnitude,Kedalaman,Wilayah,Shakemap
2014-01-27 23:14:02 WIB,8.16 LS,109.26 BT,5.3 SR,33 Km,Jawa Tengah ,Shakemap
2014-01-26 21:43:11 WIB,4.78 LU,95.3 BT,3.7 SR,10 Km,Aceh ,Shakemap
2014-01-25 23:58:02 WIB,8.33 LS,109.22 BT,4.8 SR,73 Km,Jawa Tengah ,Shakemap
2014-01-25 12:14:20 WIB,8.48 LS,109.17 BT,6.5 SR,48 Km,Jawa Tengah ,Shakemap
2014-01-24 21:36:22 WIB,4.4 LU,95.31 BT,4.8 SR,10 Km,NAD ,Shakemap
2014-01-24 20:37:46 WIB,8.15 LS,124.83 BT,4.9 SR,10 Km,NTT ,Shakemap
2014-01-23 14:29:23 WIB,5.16 LU,95.39 BT,4.2 SR,109 Km,NAD ,Shakemap
2014-01-22 13:00:17 WIB,2.07 LS,115.53 BT,3.6 SR,10 Km,Kalimantan Selatan ,Shakemap
2014-01-18 07:19:55 WIB,2.5 LS,136.33 BT,4.8 SR,12 Km,Papua ,Shakemap
2014-01-09 23:16:48 WIB,7.12 LS,105.37 BT,5.2 SR,10 Km,BANTEN ,Shakemap
2014-01-09 19:05:48 WIB,0.88 LS,100.66 BT,4.1 SR,10 Km,Sumatera Barat ,Shakemap
2014-01-05 10:42:12 WIB,0.69 LS,131.24 BT,3.2 SR,12 Km,Papua Barat ,Shakemap

Singkat cerita, kita akan menggunakan fungsi open untuk membuka file di atas, kemudian membacanya baris per baris menggunakan eachline. Dengan menggunakan split, data di atas akan dipisahkan berdasarkan koma ','. Hasil pemisahan akan dipilah kembali untuk diambil data lintang dan bujur saja. Hasil akhir akan disimpan ke dalam file baru menggunakan println.

Dalam Julia, penjelasan di atas dapat dituliskan sebagai berikut:

# Fungsi ini mirip dengan "clear" di Octave
workspace()

# Baca file datagempa.csv
File_ori = open("datagempa.csv","r")

# Buat file baru data_lintang_bujur.csv
File_new = open("data_lintang_bujur.csv","w")

#Baca datagempa.csv baris per baris
for Line in eachline(File_ori)
  # Hapus enter, "\n", kemudian
  # Pisahkan data berdasarkan koma
  temp = split(replace(Line,r"\n",""),",")
 
  # Simpan data lintang dan bujur
  # pada file baru data_lintang_bujur.csv
  println(File_new,join(temp[2:3],","))
end

# Tutup semua file yang terbuka
close(File_ori)
close(File_new)

Simpan program di atas dengan nama main.jl kemudian jalankan program tersebut dengan mengetik include("main.jl") di Julia anda, dan kita akan mendapatkan data seperti di bawah ini.

Lintang,Bujur
8.16 LS,109.26 BT
4.78 LU,95.3 BT
8.33 LS,109.22 BT
8.48 LS,109.17 BT
4.4 LU,95.31 BT
8.15 LS,124.83 BT
5.16 LU,95.39 BT
2.07 LS,115.53 BT
2.5 LS,136.33 BT
7.12 LS,105.37 BT
0.88 LS,100.66 BT
0.69 LS,131.24 BT

Program dapat pula didownload di sini.
Alternatif lain selain menggunakan fungsi eachline yaitu readlines. Sehingga program main.jl di atas dapat sedikit dirubah menjadi

# Fungsi ini mirip dengan "clear" di Octave
workspace()

# Baca file datagempa.csv
File_ori = open("datagempa.csv","r")

# Buat file baru data_lintang_bujur.csv
File_new = open("data_lintang_bujur.csv","w")

# Baca semua baris dari datagempa.csv
all_Lines = readlines(File_ori)


# Baca datagempa.csv baris per baris
for Line in all_Lines
  # Hapus enter, "\n", kemudian
  # Pisahkan data berdasarkan koma
  temp = split(replace(Line,r"\n",""),",")
 
  # Simpan data lintang dan bujur
  # pada file baru data_lintang_bujur.csv
  println(File_new,join(temp[2:3],","))
end

# Tutup semua file yang terbuka
close(File_ori)
close(File_new)