(Abbreviated => Abr)の形式で略語ファイルを読み込むことができるRubyツールはありますか?それから私は別のファイルから各単語を読む必要があります。単語が略語の単語と一致する場合は、短縮された単語に変更する必要があります。私はハッシュを使うことができると思うが、ファイルからロードする方法は分からない。Ruby:ファイルからハッシュを読み込むには?
答えて
YAMLは、アプリとプログラミング言語の間でやりとりできる方法でデータを保存するための非常にユニバーサルなフォーマットです。 JSONは別の代替手段であり、ウェブサイトでは非常に一般的です。
私は設定ファイルのようなものにYAMLを使用します。これは、読み込みと変更が非常に簡単だからです。例えば、このRubyの構造:YAMLに変換するとき
irb(main):002:0> foo = { 'a' => 1, 'b' => [2, 3], 'c' => { 'd' => 4, 'e' => 5 } }
{
"a" => 1,
"b" => [
[0] 2,
[1] 3
],
"c" => {
"d" => 4,
"e" => 5
}
}
は次のようになります。
irb(main):003:0> puts foo.to_yaml
---
a: 1
b:
- 2
- 3
c:
d: 4
e: 5
あなたはファイルにそれを救うことができる:
File.open('foo.yaml', 'w') { |fo| fo.puts foo.to_yaml }
をし、それを読み戻します。
bar = YAML.load_file('foo.yaml')
{
"a" => 1,
"b" => [
[0] 2,
[1] 3
],
"c" => {
"d" => 4,
"e" => 5
}
}
類似JSONを使用してyは、:
puts foo.to_json
{"a":1,"b":[2,3],"c":{"d":4,"e":5}}
あなたはYAMLの場合と同様に、ファイルにJSONを保存し、それをリロードし、ハッシュに戻ってそれを回すことができます。どちらか
irb(main):011:0> File.open('foo.json', 'w') { |fo| fo.puts foo.to_json }
nil
irb(main):012:0> bar = JSON.parse(File.read('foo.json'))
{
"a" => 1,
"b" => [
[0] 2,
[1] 3
],
"c" => {
"d" => 4,
"e" => 5
}
}
との大きな勝利YAMLやJSONはそれらのファイルを読み込み、データを使用し、それを読み込みまたは書き込みのいずれかすることができます読み取ることができる任意の言語は以下のとおりです。これは、しかし少し異なる構文です。
Ruby Stringのgsub
がハッシュを理解しているので、文字列の置換はハッシュを持つと非常に簡単です。これはthe docsからです:
2番目の引数がハッシュされ、マッチしたテキストは、その鍵の一つである場合は、 対応する値は、置換文字列です。
foo = 'Jackdaws love my giant sphinx of quartz' bar = { 'quartz' => 'rosy quartz', 'sphinx' => 'panda' } foo.gsub(Regexp.union(bar.keys), bar) "Jackdaws love my giant panda of rosy quartz"
あなたが代入をやって単語境界の衝突に注意しなければならないのが、パターン内の
\b
フラグが助けになることができます。
これは、あなたがこのような何かを行うことができますを意味します。その作業を行うことは、読者のための練習です。
Marshal.load
およびMarshal.dump
を参照してください。
また、ハッシュをyamlファイルにシリアル化してから、YAMLを使用して読み込み/保存することもできます。
'Marshal'フォーマットは、使用しているRubyのバージョンに固有のものであり、バージョンが一致しないときに' Marshal'データを読み取る方法はありません。これは、ディスクへのシリアル化のための悪いフォーマットになります。 –
私はこれを見つけました。http://www.rubydoc.info/gems/bosh-director/1.1868.0/Bosh%2FDirector%2FConfig.load_hash 自分でハッシュを読み込む方法を調べた後に。
私の例は、RailsアプリケーションでMongoDBを扱うときです。
私は、作業する予定のコレクションを取得するためにInitializeメソッドを設定します。ここ
def initialize @collection = self.class.collection end
self.classは、私がいるよクラスです。のは、一例として、人々を使用してみましょう。
loadメソッドがbinding.pry
[1] pry(#<People>)> file_path
=> "people_results.json"
[2] pry(#<People>)> hash
=> [{"number"=>0, "first_name"=>"SHAUN", "last_name"=>"JOHNSON", "gender"=>"M", "group"=>"15 to 19", "secs"=>1464}, {"number"=>1, "first_name"=>"TUAN", "last_name"=>"JOHNSON", "gender"=>"M", "group"=>"masters", "secs"=>3994}, {"number"=>2, "first_name"=>"EARLINE", "last_name"=>"BROWN", "gender"=>"F", "group"=>"masters", "secs"=>1415}...
[3] pry(#<People>)> self
=> #<People:0x007fc80301b5f8 @coll=#<Mongo::Collection:0x70248510355560 namespace=test.people>>
[4] pry(#<People>)> self.class
=> People
内側次
def load_collection(file_path)
hash_values = self.class.load_hash(file_path)
@collection.insert_many(hash)
end
あるので、この場合にはload_hash
メソッドは、パラメータを取り、この場合、私は、JSONに渡さいくつかのデータが入ったファイルを作成します。次に、そのデータをコレクションに挿入します。
- 1. ファイルから読み込む
- 2. ファイルから読み込む
- 3. Rubyのファイルから変数を読み込む
- 4. ファイルから読み込み、Javaのファイルに書き込む
- 5. バッチスクリプト - ファイルから行を読み込むときにハッシュを無視する
- 6. ファイルから配列を読み込む
- 7. perlをindex.htmlファイルから読み込む
- 8. ファイルからツリーマップを読み込む(Java)?
- 9. ファイルからテキストを読み込む
- 10. ファイルからデータを読み込む
- 11. Excelファイルからセレンを読み込む
- 12. JavaScriptからファイルを読み込む
- 13. ファイルから設定を読み込む
- 14. rubyのキーワードを含む特定の行からファイルを読み込みます。
- 15. Rubyに先に保存せずにGETリクエストからzipファイルを読み込む?
- 16. PHP:ファイルから読み込むと
- 17. ファイルから読み込むJList scollペインプログラム
- 18. tomlファイルから読み込むjava
- 19. ファイルから読み込むC++(シンプル)
- 20. ファイルから読み込む問題
- 21. C#ファイルから読み込む
- 22. params.iniファイルから読み込むPHPスクリプト
- 23. Visual C++/CLIでファイルに書き込み、ファイルから読み込む方法は?
- 24. rubyフックでpythonファイルを読み込む方法は?
- 25. XMLファイルをデータベースに読み込む(Ruby on Rails)
- 26. GitHubからJavaScriptファイルを外部に読み込むには?
- 27. Rubyでデータベースからデータを読み込む方法
- 28. Pythonはリストにファイルを読み込む -
- 29. RoR:モバイルデバイスからファイルを読み込むには?
- 30. Python AWS Boto3:S3バケットからファイルを読み込むには?
これは良い説明ですが、私はyamlやjsonを持ってきても簡単な運動だけが複雑になると主張します。ファイルはすでに存在していて、すでに取得しているほどシンプルです。区切られたテキストファイルで、1行に1つのレコードです。ファイルを行単位で読み込み、分割してハッシュを作成するだけです。 – Jim
ありがとうございました!それは今完璧に動作します。 – user1128637