
お世話になります。
csvファイルで作成したデータを出力表示させるスクリプトで
csvファイル内の改行コード(セル内)以後のデータが出力できません。
下記の置換で改行コード以後のデータが表示されません。
$abc =~ s/\r\n//g;
$abc =~ s/\n//g;
$abc =~ s/\r//g;
csvファイル内の改行の数が多く、1行のデータが改行の為に、2行になったりしているので出力前に置換し表示させる方法です。
csvファイル作成時につく""は正常に置換しています。
似たような質問もあったのですが、少し違うようですので質問いたしました。
何卒、ご教授お願いいたします。
No.2ベストアンサー
- 回答日時:
あ、一気に配列に読んでいるのですね。
でも同じ対処で行けると思います。
$/="\x0D\x0A"("\r\n"でも良いです)は、
> @DATA = <CSV>;
この行より前までに入れておけば良いです。
また、@DATA=<CSV>より後に
$/をデフォルトの値に戻すという意味で、
$/="\n"を入れておいた方が良いでしょう。
(本当はこういう時はlocalを使うものなのかも知れませんが)
No.1
- 回答日時:
状況が良く分からないのですが、
ファイルから一行ずつ読み込み(データ中に改行があるので1レコード分とは限らない)
改行文字を置換で削除
行末に\nを付けて出力
のような処理になっているのではないでしょうか。
これでは結局、データ中の改行は消えませんよね。
置換はその書き方で動作すると思うので、
入力、出力の仕方をどうやっているか、も書かれた方が良いと思います。
とりあえず、参考までに、
「1レコード」ずつ読み込む方法の例だけ書いておきます。
例えば、行末が"\r\n",データ中では"\n"の場合なら、
$/="\x0D\x0A";
で読み込めば、一レコードずつ取り出せます。
例えば、行末が"\n",データ中の改行も"\n"で、
データ中に改行がある時は"~"が付加され、データ中に"がある時は""に置き換えられている
という条件であれば、
$/="";
$all=<>;
@lines=($all=~/\G((?:".*?"|[^"])*?)\n/gs);
$lines[0]が1レコード目、$lines[2]が2レコード目・・となります。
この回答への補足
データ読込み↓
sub CSV_DL
{
open(CSV, "<$csv") or &printErrorPage("取得失敗");
eval{ flock(CSV, 1) };
@DATA = <CSV>;
close CSV;
$douitu = 0;
$name = 0;
$name2 = 0;
while ($name < @DATA)
{
(@AAA) = split(/\,/, @DATA[$name]);
if ("@no[0]" eq "@AAA[0]")
{
$name2 = "$name";
}
if ("@new_no[0]" eq "@AAA[0]")
{
$douitu=1;
}
$name++;
}
}
データ出力↓
($no,$name,$syousai,$end) = split(/\,/, @DATA[$name2]);
$syousai =~ s/\*/\*/g;
$syousai =~ s/\r\n//g;
$syousai =~ s/\n//g;
$syousai =~ s/\r//g;
$syousai =~ s/\"</\</g;
$syousai =~ s/\>\"/\>/g;
$syousai =~ s/\""/\"/g;
$syousai =~ s/\""""/\""/g;
$syousaiにはhtmlタグが入っています。
上記の場合は下記はどこへ記述すればよろしいでしょうか?
>例えば、行末が"\r\n",データ中では"\n"の場合なら、
>$/="\x0D\x0A";
>で読み込めば、一レコードずつ取り出せます。
ご教授お願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- その他(プログラミング・Web制作) pythonのpandasのcsvの外部結合(outer_join)した際に列が想定とは異なる事象 1 2022/05/25 13:23
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
エクセルVBA コードが同じでも...
-
MATLAB グローバル変数の宣言
-
エクセルVBAでCSVファイ...
-
ReadLineでの読み出し行を指定する
-
openした後、closeしないでプロ...
-
ExcelをCSV書き出す場合のシー...
-
VB6.0でDB接続する際に切断時の...
-
合致する番号のデータを抽出す...
-
perlで容量の大きいCSVファイル...
-
awkスクリプトでダブルクォーテ...
-
close()で例外が投げられる理由
-
.WFAファイルを変換する
-
batファイルでrenameができませ...
-
重複するデータを抽出できる秀...
-
fgets で値が取得できない
-
【エクセル】改行無しテキスト...
-
shellのコマンド deffの差分の...
-
Windowsで複数のファイルを同じ...
-
Edge スクレイピング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA コードが同じでも...
-
VBAでCSVファイルを途中行まで...
-
MATLAB グローバル変数の宣言
-
openした後、closeしないでプロ...
-
ExcelをCSV書き出す場合のシー...
-
ReadLineでの読み出し行を指定する
-
VB6.0でDB接続する際に切断時の...
-
Perlの変数に文字数制限(容量...
-
JavaでCSVファイルを高速に読む...
-
VBAで巨大なファイルの途中から...
-
C言語でのファイルのデータ更...
-
C#でCSVファイルを逐一更新したい
-
perl内でPHPを動かす?
-
CSVファイルの内容を編集する方...
-
指定行データの取得
-
CSV出力に関して
-
拡張子 ”log” と ” dat” の違い
-
open( ) の読み込み量
-
ファイル内の日付から1週間前...
-
perlについて、教えてください。
おすすめ情報