
CSV/テキスト ファイルから Calc にデータをインポートしたいです。
最初の列には「ダミーテキスト # i'、2 番目の列には数値が表示されます。
テキストファイルでは、「ダミーテキスト # i' と数値は、いくつかの空白スペースで区切られています。したがって、おそらく ' ' (2 つの空白スペース) を区切り文字として使用し、' 区切り文字をマージするオプションにチェックマークを付けることでこれを実現できます。
しかし、私はこれをどうやって行うのか分かりません。カスタムとして「その他」を使ってみましたセパレーターしかし、空白スペースがいくつあっても 1 つとして解釈されるようです。
これは、スプレッドシートにコピーして貼り付ける初期データです。
そして、これが私が得ることができるものです。「スペース」オプションのマークを外すと、右端のスペースのみが考慮されることに注意してください。
ご覧のとおり、以下のどれも役に立ちません。ダミーテキスト # i' は、Libreoffice が 1 つのスペースを区切り文字として使用しているように見えるため、さまざまな列に分散されています。
2番目(マージ区切り文字)は近づいてきましたが、まだ「ダミーテキスト # i最初の列に「」と入力します。
@Zina が別のバージョンでテストしたので、私は Libreoffice バージョン (4.3.3.2) をチェックしましたが、かなり目立つ欠陥のように思われるため、これが根本的な原因であるかどうかは疑わしいです。
何が間違っているのでしょうか? バージョンの欠陥でしょうか? よろしくお願いします。
答え1
CentOS 7 で LibreCalc 4.3.7.2 を試したところ、うまくいきました。「スペース」と「区切り文字の結合」を選択するだけです。ランダムなデータ (行の列数も同じではありません) を含むテキスト ファイルを作成しました。一部のデータは 1 つのスペースで区切られ、一部のデータは 2 つ以上のスペースで区切られています。プレビュー ペインで、「区切り文字の結合」を有効/無効にしたときにデータがどのように変化するかを確認できました。スペースは確かにありますか? また、一部の特殊文字が表示されていませんか?
わかりました。説明は理解できました。「ダミー テキスト #??」を引用符で囲み、「その他」以外のすべての選択を解除して、ダブル スペースを入れて、テキスト区切りを引用符に設定する場合にのみ、必要な動作が得られると思います。または、他のユーザーが既に提案しているように、すべてのダブル スペースをセミコロンなどに置き換える必要があります。
答え2
(スクリプト可能な) 2 段階のプロセスでは、sed を使用して一部のスペースをタブに変換してからインポートできます。サンプル スクリプト:
#!/bin/bash
tmpcsv=$(mktemp)
inputcsv=$1
mv $inputcsv $tmpcsv
sed 's/ /\t/g' $tmpcsv > $inputcsv
scalc $inputcsv