Ruby open-uriのエラー
initialize': Invalid argument @ rb_sysopen - https://www.aaa.com (Errno::EINVAL)
確認すると、
Rubyの3からは
openではなく、URI.openを使うようです。
require 'open-uri' url = 'https://www.aaa.com' #aaa = open(url) エラー aaa = URI.open(url) Ruby3の場合
ありがとうございます。
hawksnowlog: Ruby3 以降では open-uri は URI.open を使用する必要がある
C++ 部分文字列の取得
C++で部分文字列の取得
#include <string>
#include <iostream>
using namespace std;
void main(void)
{
string str1("Hello World");
cout << "右から3文字:" << str1.substr(0,3) << endl;
cout << "3文字から6文字まで:" << str1.substr(3,6) << endl;
cout << "6文字以降:" << str1.substr(6) << endl;
}
RubyでCSV
■CSVファイルの読み込み
TSV版
require 'csv'
CSV.open("sample.tsv'.col_sep:"\t",headers:true) do |csv|
csv.read do |row|
row.each do |header,value|
puts "#{header}:#{value}"
end
puts '-----'
end
end■CSVファイルの読み込み2
require 'csv'
data = CSV.read('sample.csv')
puts data■CSVファイルの読み込み3
datas = CSV.read('sample.csv')
datas.each do |data|
puts data[0] + "\t" + data[1]
end■CSVファイルの読み込み4
require 'csv'
CSV.foreach('sample.csv') {|row|
puts row[0] + "\t" + row[1] + "\t" + row[2]
}
■CSVファイルをテキストに変換する
変数 = <配列>.to_csv
■テキストをCSV配列に変換する
変数 = <テキスト>.parse_csv
■CSVファイルの書き出し
>||
require 'csv'
out = CSV.open('sample2.csv','w')
out << ["A","B","C"]
out << ["Ruby","Python","Rust"]
out.close■CSVファイルの書き出し
require 'csv'
CSV.open('sample2.csv','w') do |out|
out << <配列>
end■テキストファイルを読み込んでCSVファイルに変換
require 'csv'
result = []
File.foreach('sample.txt') do |line|
result << line.parse_csv
end
CSV.open('sample.csv','w') do |csv|
result.each do |row|
csv << row
end
end
Rubyで文字変換(編集中)
Rubyで値の変更メモ
#ASCIIコードを文字に変換 a = 65 a.char #=>"A" #数字を文字に変換 a.to_s #=> "65" #数字を16進数に変換 a.to_s(16) #=> "a" a.to_s.hex() #=> "16" 10を16にしたら意味が違う・・・ #その他変換 "11111111".to_i(2) #=>255 "255".to_i(10) #=>255 "FF".to_i(16) #=>255 #クラスの確認 a.class #=> Integer
Rubyのブロック構文とdo
Rubyを勉強していて、理解ができなかったのが、ブロックという考え方です。
ループ処理ならわかるのですが、処理の単位ということでしょう。
■eachメソッドの例
(1..10).each do |v|
puts v
end
doからendをブロックとして表す。
この処理は{}でも表せます。
(1..10).each {|v|
puts v
}一般的に複数行に渡る場合やブロックを記述する場合には、do...endを使用。
1行で記述する場合は、{....}を書くようです。
(1..10).each {|v| puts v}
Rubyでファイル処理(1)
Rubyでファイルの読み込み
Rubyの読み込みはブロックの読み込みが一般的なようです。
ブロックは、{}で囲んだ方法です。
特徴は、open,closeが不要です。
■1行ずつ読み込み
File.open("sample.txt","r") do |f|
while line = f.gets
puts(line)
end
end■1行ずつ読み(使えるのかな)
num = 1
File.open("sample.txt","r") do |f|
f.each_line{|line|
puts(num.to_s + ": " + line)
num = num + 1
}
end■指定のバイト数を読み込む
File.open("sample.txt","r") do |f|
puts(f.read(10))
puts(f.read)
end■各行を配列の要素として読み込む
File.open("sample.txt","r") do |f|
lines = f.readlines
puts(lines[0]) #1行目を出力
end■ファイルにデータを書き込む
File.open("sample.txt","w") do |f|
f.puts("sunday") #改行付きで出力
f.print("monday") #改行なしで出力
end■バイナリファイルの読み込み(ブロック未使用)
io = File.open("aa.jpg","rb")
buf = io.read(400)
m = buf.unpack("i*")
p m[0]■文字配列をファイルに書き込む
a = ["C++","COBOL,"FORTRAN","Go"]
File.open("sample.txt","w") do |f|
a.each{|s|
f.puts(s)
}
end■バイナリファイルの読み込みと書き込み
File.open("aa.jpg","rb") do |infile|
File.open("bb.jpg",wb") do |outfile|
while d = infile.read(1)
outfile.write(d)
end
end
end■簡単な読み込み
a = File.read("aa.jpg") #ファイルの読み込み
File.write("bb.jpg",a) #ファイルの書き出し