アプリ版:「スタンプのみでお礼する」機能のリリースについて

タブ区切りのcsvファイルを書き出したのですが、レコード毎に改行されずに1行の長いデータになってしまいました。
この書き出し方法そのものを変更することはできません。
(iTunes8.1での「プレイリスト書き出し」です)
これを27項目ごとに改行させて、Excelなどの表計算ソフトで1行が1レコードとなるようにデータを加工したいのですが、どうすればいいのでしょうか?
Macユーザーなので、できればOpenOfficeなどでできる方法で教えていただけると助かります。

A 回答 (3件)

うーん、原因不明ですね。

Vista環境では一応改行区切りできてます。
考えられるのはエスケープ文字(Vistaでは円マーク OS Xではバックスラッシュ) の関連でしょうか。
$buf =~ sub/(m4a|m4p)/\1\n/g;

でもかわらないでしょうか。

後「CotEditor」をお使いとのことですが、このエディタの正規表現置換の
機能を利用されてみてはいかがでしょうか。
検索文字列に「(m4a|m4p)」を指定して置換文字列に「\1\n」を指定して
みてください。
こちらでは、「CotEditor」は使えないのであくまで推測を域を脱しませ
んが。
    • good
    • 0
この回答へのお礼

できました!
なんのことはない、正規表現置換だけでできたのですね。

私のプレイリストにはmp3エンコードの楽曲やビデオなんかも混じっているので、iTunesから書き出したplaylist.txtをエディタの検索で(m4a|m4p|mp3|m4v)として\1\nで置換したらできました。
最初のレコードだけは見出しの「場所」の後になっているので手動で改行しましたが、あとは問題ありませんでした。

いろいろとお手数をおかけしてすみません。本当にありがとうございました。

お礼日時:2009/04/08 18:24

#1です。

返信が遅れ申し訳ありません。
こちらではWindowsVistaSP1、iTunes8.1のエクスポートで確認しました。
Em-Editor FREE、サクラエディタともUTF-16LE(BOMつき)でレコード区切り
は空白2個になっています。

別法ですが、拡張子が「m4a」「m4p」しかないのならそれを利用できないでしょうか。
デフォルトの文字コードがUTF-8なら
use utf8;
use Encode;

open $in,"<",ファイル名;
$/=undef;
$buf = <$in>;
chomp $buf;
close $in;

Encode::from_to($buf,'UTF-16LE','UTF-8');

$buf =~ s/(\.m4a|\.m4p)/\1\n/g;
$buf =~ s/\n */\n/g;
print $buf;

ではだめでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
今度は文字化けしませんでしたが、やはりレコードごとに改行は入りませんでした。
今回の作業はちょっと私には敷居が高すぎたようです。
いろいろとありがとうございました。

お礼日時:2009/04/08 02:04

OS XならPerlが使えると思います。

iTuneのプレイリストのエクスポート
ファイルはUTF-16LEでレコードが2個の空白で区切られているから、

use Encode;
open $infile,"<","ファイル名" or die;
$/=undef;
$buf =<$infile>;
Encode::from_to( $buf, "UTF-16LE", "shiftjis" );
@s = split( "__",$buf );
#第一引数は1バイトスペース二個です。
print join( "\n", @s );

の要領でいけませんか?

この回答への補足

ご回答ありがとうございます。
Perlはやったことがないのですが、私なりにネットで調べて実行してみました。
しかし実行したデータがターミナル上で文字化けして表示され、レコードごとの分割もされていないようでした。
以下に実行した手順を記します。私の環境はMacOS 10.5.6です。

1.教えていただいたコードをテキストエディタ(CotEditor)に貼付けて、bunkatsu.plとして保存しました。
その際、”ファイル名"のところをiTunesのプレイリストから書き出したplaylist.txtまでのパス(/Users/******/Desktop/playlist.txt)に変更しました。
保存形式は、行末コードはCR/LF、エンコードはUnicode(UTF-8)です。

2.ターミナルから perl /Users/******/Desktop/bunkatsu.plを実行しました。

どこが悪かったのかご指摘いただけませんか?
また、よければコードをド素人にもわかるように、解説していただけませんか?
あと、CotEditor上でiTunes8.1から書き出したplaylist.txtを開くとエンコードがUnicode(UTF-16)で、レコードとレコードの間には、スペースが1つしか入っていないように見えるのですが、「UTF-16LEでレコードが2個の空白で区切られている」というのはどこからご判断されたのでしょうか?

ド素人のため、たいへんお手数をおかけしますが、よろしくお願いします。

補足日時:2009/04/07 01:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す