私はセパレータとしてtt
を使用するcsvファイルを持っています。しかし、一部の値がt
で終わることがあるため、いくつかのエッジケースが壊れています。私はこのGem https://github.com/tilo/smarter_csvを使ってcsvデータを取得しています。壊れたデータのひどく設計されたcsvファイルが値を破る
例:
4909ttZSWttPrince RupertttCanadattCAttNorth Americatt54.3333tt-130.283
出力:(市と国の値に注意してください)
{:id=>4909, :code=>"ZSW", :city=>"Prince Ruper", :country=>"tCanada", :country_code=>"CA", :continent=>"North America", :coordinate_x=>54.3333, :coordinate_y=>-130.283}
単語がトンで終わる場合かどうかを確認することをCSVリーダーを伝える方法があります次の文字は大文字で始まり、それ以外の場合は区切りません。 ((tt)t repeatに注意してください)。これは私の現在のコードです:
options = {
:col_sep => 'tt',
:headers_in_file => false,
:user_provided_headers => [
"id",
"code",
"city",
"country",
"country_code",
"continent",
"coordinate_x",
"coordinate_y"
]
}
records = SmarterCSV.process(filename, options)
Wow、セパレータとして「tt」。これは本当に悪い選択です。 'tt'を含む言葉がたくさんあります。このようなひどく設計されたフォーマットをサポートするための回避策やハックは、私にとって時間の無駄だと感じています。最初にフォーマットを修正するオプションはありますか? – spickermann
@spickermann私は全く同意します。私は真剣にセパレーターとして 'tt'を使うことは誰がやろうとしていたのでしょうか?そこでは論理はありますが、私はそれに対処しなければならないと思います。これが私が「ひどく設計された...」と題された理由です。 – Kunok