はじめまして。

HTMLファイルのタグ以外のデータを最終的にCSVファイル(カンマ区切り)に
落としたいのですが、このプログラムをPerlで書かなければなりません。

ツリー構造を利用?して書くと言われましたが、良くわかりません。
Perlも始めたばかりなので、わかる方は教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

アンケートフォームにユーザが入力したデータが、どうして html になっているのかがよくわからないのですが。

よくあるのは、アンケートフォームの各入力項目を cgi プログラムにわたしてしまうやりかたですが、それを perl で作ったとしても、html を解析するという事態は起きません。

なにか、あまり一般的でないようなことをしようとしているように読めてしまいますが、もうすこし問題を分析した方がいいでしょうね。

この回答への補足

本当に説明不足ですいません。

過去、アンケートを取ったものをソース(HTMLファイル)として、とってあります。それが、500件ほどあります。そのソースはもちろん<HTML><HEAD><TITLE>アンケート</TITLE>.....となっています。この「アンケート」という部分を抜き出し、CSVファイルとして保存し直したいという事です。

最終的にこのCSVファイルからMSAccessへ移し、DB管理していきたいのが狙いです。
500件という膨大な量がありますし、秀丸マクロと手作業でも構いませんが、
出来ればPerlスクリプトで実行したいのです。

補足日時:2001/04/06 10:13
    • good
    • 0
この回答へのお礼

色々と有難うございました

お礼日時:2001/04/06 14:48

例えば、どんな html ファイルを、どんな csv ファイルに変換するのでしょう?



html の文書は、基本的には階層構造をしています。ですから、一般の html の文書を csv の行列の形に一意に変換できるとは思えないのですが。html 文書に何らかの制約があるとか、その内の特定の構造の部分だけ抜き出すというわけでもないのですか?

あと、一般の html 文書を解析するには perl の HTML::Parser (と HTML::Tagset ?)というモジュールを、どこかから入手する方がいいでしょう。しかし、これもかなり複雑で、html の解析のことや、perl をだいぶ知ってないと使えないような気がします(私は使ったことないですが)。日本語を対象にするには、日本語対応の perl の方がいいでしょうし。

いずれにしても、まずは、何をしたいのかを明確にすることですね。

この回答への補足

例えば、アンケートフォームなどユーザが入力した文章をCSVファイルに落としたいということです。

説明がうまくいかなくてすいません。

補足日時:2001/04/05 21:48
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q「古い圧縮ファイル」の確認方法

Dドライブのディスクのクリーンアップをしたいのですが、実行できるものが、「古い圧縮ファイル」の削除しかありません。

「古い圧縮ファイル」がどのプログラムかを確認する方法を教えてください。

また、圧縮されたファイルの名前は青くなるらしいのですが、見つかりません。どうしてでしょうか
圧縮ファイルは1G弱あります。

Aベストアンサー

http://www.atmarkit.co.jp/fwin2k/win2ktips/106cleanup/106cleanup.html

初期設定では、50日以上アクセスの無かったファイルに対して、圧縮が行われます。
当然、圧縮してからでないと、ファイル名は青色にはなりませんので、ディスク・クリーンアップでの候補段階では、黒色のままです。


尚、設定によっては青色表示にならない場合も有りますけど。

http://121ware.com/qasearch/1007/app/nec.jsp?005084

Qカンマ区切りのCSVファイルから""を削除したい

初めて質問いたします

以下のような形式のCSVファイルがあります
例)
品名,数量,単価,金額
"りんご",1,150,150
"バナナ",10,200,2000
"メロン","1,000","2,000","2,000,000"

上記のように、品名にはダブルクォーテションがつき、
数量、単価、金額については桁区切りのカンマが発生する場合、ダブルクォーテーションで囲まれています

上記のようなデータを
りんご,1,150,150
バナナ,10,200,2000
メロン,1000,2000,2000000
のように別ファイルへ出力するにはどのようにすればよいでしょうか?

プログラムでの処理で、WSHを使ったものを教えていただけますと、幸いです
よろしくお願いいたします

Aベストアンサー

もう仕事は終わってしまったかもしれませんが、(^^ゞ
VBS で作ってみました。
対象CSVファイルのあるフォルダに保存して実行してみてください。
_NewFilesフォルダに保存されます。
※対象外のCSVファイルが有っても処理してしまいます

Dim oSh
Dim oFs
Dim BaseFolder
Dim newFolder
Dim f

Set oSh = CreateObject("Wscript.Shell")
Set oFs = CreateObject("Scripting.FilesystemObject")
Set BaseFolder = oFs.getFolder(oSh.currentDirectory)

newFolder = BaseFolder.Path & "\" & "_NewFiles"

If oFs.folderExists(newFolder) = False Then
oFs.createFolder (newFolder)
End If

For Each f In BaseFolder.Files
If oFs.GetExtensionName(f) = "csv" Then
Call changeIt(f.Path, newFolder)
End If
Next

MsgBox newFolder & " フォルダ内を検証"


Sub changeIt(orgFname, trgFolder)
Dim oFs
Dim orgF
Dim newF
Dim newFname
Dim buF
Dim oReg

Dim Mcol
Dim M
Dim M1, M2
Const forReading = 1
Const forWriting = 2

Set oFs = CreateObject("Scripting.fileSystemObject")
Set oReg = CreateObject("VBScript.RegExp")
Set orgF = oFs.getFile(orgFname).openAsTextStream(forReading)

newFname = trgFolder & "\" & oFs.getBaseName(orgFname) & "_New.csv"
oFs.CreateTextFile (newFname)
Set newF = oFs.getFile(newFname).openAsTextStream(forWriting)

With oReg
.Pattern = """.*?"""
.IgnoreCase = False
.Global = True
End With

Do Until orgF.atendofstream
buF = orgF.readline
Set Mcol = oReg.Execute(buF)

For Each M In Mcol
M1 = Replace(M.Value, ",", "")
buF = Replace(buF, M.Value, M1)
M2 = Replace(M1, Chr(34), "")
buF = Replace(buF, M1, M2)
Next

newF.WriteLine buF
Loop

orgF.Close: newF.Close
Set Mcol = Nothing
Set oReg = Nothing

End Sub

もう仕事は終わってしまったかもしれませんが、(^^ゞ
VBS で作ってみました。
対象CSVファイルのあるフォルダに保存して実行してみてください。
_NewFilesフォルダに保存されます。
※対象外のCSVファイルが有っても処理してしまいます

Dim oSh
Dim oFs
Dim BaseFolder
Dim newFolder
Dim f

Set oSh = CreateObject("Wscript.Shell")
Set oFs = CreateObject("Scripting.FilesystemObject")
Set BaseFolder = oFs.getFolder(oSh.currentDirectory)

newFolder = Bas...続きを読む

Qファイルの圧縮方法

AVIやMPGの画像ファイルを圧縮する方法を教えてください。900mb位のファイルをCD-Rに落とし込める700mbまで圧縮したいんですが。できれば、zipやlzhなどの後で解凍しなくてはいけないような圧縮方法ではなく、多少画像が荒くなってもファイルを単純に縮小させるような方法を教えていただけると有り難いのですが。。
因みに、TMPGEncを試してみたんですが、どうもうまくいかなくて。。ファイルサイズが元のファイルより逆に大きくなってしまうんです。
すいませんが、宜しくお願いします。

Aベストアンサー

画像圧縮?くす(^^
エンコはTMPGEncやaviutlでやるのがふつーです。
ええ 絶対! 
aviutl
http://ruriruri.zone.ne.jp/aviutl/

zipとかで圧縮しても意味ありません サイズ的に。

で、TMPGEncで元より大きくなるのは問題は
コーデック、画像サイズ、 音声ファイルなど
理由はいっぱいあります。対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=625581

だから圧縮というか再エンコードが面倒なら
ファイルをテキトーな部分でカットする方向性はどお?
CD-R 2枚に保存 450 450 くらいでカット。
対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=610331
ではでは!

追伸
カンタンにならrmファイルに変更かなあ
でも画質は落ちますよ
ネット配信 ストリーミング形式でどぞ!
RealplusG2とかRealEncoderで変換
でもaviでもないしmpegでもないですけど、どお?

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=610331

画像圧縮?くす(^^
エンコはTMPGEncやaviutlでやるのがふつーです。
ええ 絶対! 
aviutl
http://ruriruri.zone.ne.jp/aviutl/

zipとかで圧縮しても意味ありません サイズ的に。

で、TMPGEncで元より大きくなるのは問題は
コーデック、画像サイズ、 音声ファイルなど
理由はいっぱいあります。対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=625581

だから圧縮というか再エンコードが面倒なら
ファイルをテキトーな部分でカットする方向性はどお?
CD-R 2枚に保存 450...続きを読む

Qawkでcsvファイルからcsvファイルへ任意の列だ置換する事はできますか?

awkでcsvファイルからcsvファイルへ任意の列だ置換する事はできますか?

a.csvから2列目を読み取ってb.csvの3列目に上書き保存
a.csv内容 b.csv内容 結果
1,2,3,4,5  →  a,b,c,d,e → a,b,2,d,e
6,7,8,9,10    f,g,h,i,j    f,g,7,i,j

色々のサイトを見ながらやってますがうまくいきません。
よろしくお願いします。

Aベストアンサー

paste -d, a.csv b.csv | awk 'BEGIN{FS=",";OFS=","}{print $6,$7,$2,$9,$10}'

awk だけだと少々面倒なので手抜きしました

Qファイルの圧縮方法が解りません

窓の杜やベクター等に置かれている、フリーの圧縮、解凍ソフトをダウンロードしていますが、テキストファイルや、画像ファイルの圧縮方法が解りません。何方か教えて頂けませんか?

Aベストアンサー

ソフトの開発者のサイトで質問することをお奨めします。

ソフトごとに操作方法が異なりますので、使用しているソフト名すらない状態では誰も必要とする回答を出せません。

窓の杜やベクターでは開発者のサイトへのリンクがありますから、そこからアクセスできますよ。

Q「,」区切りのcsvファイルを検索して文字列抽出したい

環境:windows2000
csvファイル形式:
pat,\path1\path2,\path\path3
pat_a,\path4\path5,\path7\path8
pat_a,\path7\path6,\path8\path9
バッチファイルに引数%A%を渡してcsvファイルを検索します。
検索文字列は引数%A%です。一行目に検索しようとする文字列があると
それを%%Jにset してあげます。最後に渡された引数とセットされた文字列が同じであればOKです。
自分で考えたのですがなかなかうまくいきません。
みなさまのご教授おねがいします。
FOR /F "tokens=1 delims=," %%l in ('findstr /R "%1" rrr.csv') do set palam=%%l
echo "渡された引数 [%1] "
echo "セットされた文字列 [%palam%] "
if "%palam%" NEQ "%1" (
goto :erro_end
)
引数は「pat」を渡したのですがセットされた文字列が「pat_a」
になってしまうんです。

環境:windows2000
csvファイル形式:
pat,\path1\path2,\path\path3
pat_a,\path4\path5,\path7\path8
pat_a,\path7\path6,\path8\path9
バッチファイルに引数%A%を渡してcsvファイルを検索します。
検索文字列は引数%A%です。一行目に検索しようとする文字列があると
それを%%Jにset してあげます。最後に渡された引数とセットされた文字列が同じであればOKです。
自分で考えたのですがなかなかうまくいきません。
みなさまのご教授おねがいします。
FOR /F "tokens=1 delims=," %%l in ('findstr /...続きを読む

Aベストアンサー

カンマをつけてうまくいく理由は、

FOR /F "tokens=1 delims=," %%l in ('findstr /R "^%1," rrr.csv') do set palam=%%l

が処理されるとき、まず
findstr /R "^%1," rrr.csv
の部分が処理されるからです。この時点ではまだカンマでは区切られず、

pat,\path1\path2,\path\path3
pat_a,\path4\path5,\path7\path8
pat_a,\path7\path6,\path8\path9

が findstr にそのまま渡されます。したがって、pat だけで検索すると、pat も pat_a も該当してしまいます。

しかしCSVファイルなので、最初の項目の次には必ずカンマが来ることを利用して、 pat, で検索すると、1行目だけが該当します。

この結果が FOR 文の中で展開され、

FOR /F "tokens=1 delims=," %%l in ("pat,\path1\path2,\path\path3") do set palam=%%l

のようになり、ここではじめて delims=, が効いてカンマで区切られ、palam に pat が代入されます。

カンマをつけてうまくいく理由は、

FOR /F "tokens=1 delims=," %%l in ('findstr /R "^%1," rrr.csv') do set palam=%%l

が処理されるとき、まず
findstr /R "^%1," rrr.csv
の部分が処理されるからです。この時点ではまだカンマでは区切られず、

pat,\path1\path2,\path\path3
pat_a,\path4\path5,\path7\path8
pat_a,\path7\path6,\path8\path9

が findstr にそのまま渡されます。したがって、pat だけで検索すると、pat も pat_a も該当してしまいます。

しかしCSVファイルなので、最初の...続きを読む

Qpsdファイルの圧縮方法

psdファイルの圧縮方法を教えてください。(基本的質問で恐縮ですが)
win98です。なお、ファイルは9MB程度ですが、圧縮したものを解凍する際、鮮明度が落ちずに元通りの画像で開けますでしょうか?

Aベストアンサー

●大きなサイズのファイルを分割して送付

+Lhaca 1.20 デラックス版での分割方法
http://park8.wakwak.com/~app/Lhaca/

 1. インストールは、ダウンロードした Lhaca120.exe を実行する。
 2. デスクトップに作成された +Lhaca のショートカットに、
   対象のファイルをALTキーを押しながらドロップする。
 3. 保存場所を聞いてくるので、望みの場所を指定する。
   (圧縮形式は、相手が解凍できる形式を選ぶ。)
 4. 分割されたファイル群と結合用のバッチファイルが作成される。
   (デフォルトでは 1.2MB を上限として分割される。)
   (このサイズは +Lhaca で変更できる。)
 5. (4)のファイル全てを、容量を超えないようにメールに添付して送信
   する。
   (添付ファイル総数を本文に明記すること。)
 6. 受け取った側は、全ての添付ファイルを一箇所に集めて、バッチファ
   イルを実行する。
   (操作手順は、本文に明記すること。)
 7. 分割されたファイルが結合されるので、結合された圧縮ファイルを解
   凍する。
 8. 9MBのファイルが解凍されるので、作業する。


これでどうかな!?

※他の圧縮ソフトも分割機能が備わっていると思うが・・・

●大きなサイズのファイルを分割して送付

+Lhaca 1.20 デラックス版での分割方法
http://park8.wakwak.com/~app/Lhaca/

 1. インストールは、ダウンロードした Lhaca120.exe を実行する。
 2. デスクトップに作成された +Lhaca のショートカットに、
   対象のファイルをALTキーを押しながらドロップする。
 3. 保存場所を聞いてくるので、望みの場所を指定する。
   (圧縮形式は、相手が解凍できる形式を選ぶ。)
 4. 分割されたファイル群と結合用のバッチファイルが作成される。
   (...続きを読む

QExcelでカンマ区切りの合計をユーザ関数で得たい

1セルにカンマで区切られた数値が入力されています。
別のセルにユーザ関数を使ってカンマ区切りのセルを指定して合計値を算出したいと思っています。
VBAはどの様に記述すればいいのでしょうか。

Aベストアンサー

こんな感じかな?
数値に小数が含まれるかどうか判らなかったのでDouble型にしてあります。
また、文字列等数値変換できないものが混じっていた場合(例:1,A,2)は、それを除いて合計しています。

Function Sample(aRange As Range) As Double
  Dim vData, i
  vData = Split(aRange.Value, ",")
  For i = 0 To UBound(vData)
    If IsNumeric(vData(i)) Then
      Sample = Sample + CDbl(vData(i))
    End If
  Next i
End Function

QNTFS圧縮したファイルを全部まとめて戻す方法

NTFS圧縮したファイルをプロパティからひとつひとつチェックをはずして戻すのではなく、圧縮されたファイルを全部まとめて元に戻す方法ってあるのでしょうか?

Aベストアンサー

圧縮を解除したいファイルを全て選択した状態で
→プロパティ→NTFS圧縮のチェックを外す→OK

それらのファイルがフォルダに入っているなら
フォルダのプロパティからやってもいい。
(サブフォルダにも適用するか尋ねられるからOKにする)

Q特定のディレクトにあるCSVファイルの一覧、ファイルの中身を取得するバッチコマンドについて

いつもお世話になっております。
以下の内容のバッチコマンドを作成したいのですが、
どのように作成すれば分かりません。

大変申し訳ございませんが、
教えて頂けますでしょうか。

【内容】
1.特定のディレクトにあるCSVファイルの一覧を取得して、
 そのCSVファイルの内容を1行ずつ表示したい。

以上です。
よろしくお願いいたします。

Aベストアンサー

CSVファイルのある特定のディレクトリに
以下の内容でバッチファイルを作成して実行。

@echo off
setlocal enabledelayedexpansion
dir /B *.csv >list.txt
for /F "delims=" %%i in (list.txt) do (
set /P DATA=<%%i
echo !DATA!
)

こういうことかな?


人気Q&Aランキング