を使うのに、今一度
で使い方を整理する。
前回
注意
参照文献はかなり古い(2019年)ため、現在のバージョンでは動作しない関数などが多いとの評判がある。そこでそういった齟齬があった場合は随時コメントする。なお筆者の環境は、
アプリケーション | バージョン |
---|---|
である。
1. データ構造とアルゴリズム
に組み込まれた機能を利用しつつ実用的なカスタムアルゴリズムを実装する方法を紹介する。
1.5 UTF-8を扱ってみる
Hello.txtの内容
Bulgarian здравейте
Chinese 你好
English Hello
Greek Χαίρετε
Hindi नमस्ते
Japanese こんにちは
Khmer សួស្តី
Korean 안녕하세요
Polish cześć
Russian Здравствуйте
######################### ### UTF-8を使ってみる ### ######################### hello = readlines(".../Hello.txt") hello_dict = Dict(map(x -> Pair(x...), split.(hello, ' '))) # 辞書型に変換 chinese = hello_dict["Chinese"] println(codeunits(chinese)) # 文字列の符号単位のベクトル様オブジェクト println(ncodeunits(chinese)) # 文字列に含まれる符号単位の個数 println(collect(chinese)) # 文字に分解 println(length(chinese)) # 文字数 println(isvalid.(chinese,1:ncodeunits(chinese))) # インデックスとして有効な文字の文字数目 println(thisind.(chinese,0:ncodeunits(chinese)+1)) # インデックスiが指す文字の最初のインデックス println(nextind.(chinese,0:ncodeunits(chinese))) # インデックスiより後ろにある文字の最初のインデックス println(prevind.(chinese,1:ncodeunits(chinese)+1)) # インデックスiより前にある文字の最初のインデックス
2. Juliaによるデータエンジニアリング
2.1 ストリームを管理する
デバイス上にあるデータを読み書きすべく、ファイルストリームをで扱う方法を紹介する。
ストリームを扱う場合、することを忘れないようにする。ブロック構文を用いれば自動的にクローズしてくれるため、こちらの方が望ましい。
########### ### I/O ### ########### ## ファイルの読み書き # ここではJuliaのREPL f = open(".../julia_test.txt", "w") write(f, "first line\nsecond line\n") println(f, "last line") close(f) # ファイルの読み込み f = open(".../julia_test.txt", "r") println(readline(f)) # 1行ずつ読み込む println(readline(f)) println(readline(f)) println(eof(f)) close(f) # 一度に読み込む lines = open(".../julia_test.txt", "r") do f readlines(f) end println(lines) # 一度に読込、バイナリデータとして保持 data = open(".../julia_test.txt", "r") do f read(f) end println(data) # バイナリデータを保持するdataを文字列に変換 text = String(data) println(text) println(data) # 変換すると元の変数は空になる