• 締切済み

テキストファイルを分割&ページ数を追記しHTMLファイルにするプログラム

テキストファイルを分割&ページ数を追記しHTMLファイルにするプログラムを教えてください。 (Perl/Ruby/Pythonのいずれかで) テキストファイルを分割&ページ数を追記しHTMLファイルにするプログラムを教えてください。 (Perl/Ruby/Pythonのいずれかで) 手元にあるテキストファイルを指定の行数(もしくは文字数)で分割しHTMLファイルにしたいと考えています。 [sample.txt(10分割)→1.html~10.html] フリーの分割ソフトはあるようですが ・分割とHTML化を同時にしたい ・ページ下部にファイルに対応したページ番号がつけたい  (1.htmlの下部に:<p>1ページ</p>のようなイメージ) ・最近プログラミングの勉強をしていていろんなコードを見てみたい という理由で利用しないつもりです。 何卒よろしくお願いいたします。

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

Python版です。2.5からの機能を使えばもうちょっと簡潔にできそうなきもしますが、 まだそれに慣れておりませんので使いませんでした。 Pythonスクリプトは行頭の空白が消えるととても悲しいことになるので、 _ で置き換えています。試す際にはコピペの後でスペースに置換してください。 iimport sys def take_nlines(fp, n=100): ____while True: ________#l = [fp.next() for x in range(1, n+1)] ________l = [] ________for i in range(1, n+1): ____________try: ________________l.append(fp.next()) ____________except StopIteration: ________________yield l ________________raise StopIteration ________yield l ### main ### fp = open(sys.argv[1]) idx = 1 for content in take_nlines(fp): ____try: ________ofname = "%d.html" % (idx, ) ________ofp = open(ofname, 'w') ________ofp.writelines(content) ________ofp.close ____except : ________print "Unexpected error:", sys.exc_info()[0] ________raise ____idx += 1 fp.close() 三つのどれもわかりやすさ最優先で書いたわけではないので、なにか疑問な点があれば 遠慮なく補足欄で質問してください。

kawamori_t
質問者

お礼

ありがとうございます。 Pythonはインデントが大事って言いますもんね。 これを機に勉強したいと思います。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

えーと、それじゃあ分割のところだけわかればいいですか? こんな感じでどうでしょう。 1.html, 2.html, ... に100行ごとに切り分けます。 行数などは適当に修正してください。 とりあえずPerlとRubyで。 興が乗ったらあとでPythonでもやってみます。 use strict; my $linecount = 100; my $file = shift; open my $fh, '<', $file or die "can't open $file($!)\n"; my @content = <$fh>; close $fh; my $idx = 1; while (@content) { my $outfile = $idx . ".html"; open my $ofh, '>', $outfile or die "can't open $file($!)\n"; print $ofh splice @content, 0, $linecount; close $ofh; $idx++; } ##### f = ARGV.shift linecount = 100 idx=1 open(f) do |io| lines = io.readlines while (chunk = lines.slice!(0, linecount)).length > 0 open(idx.to_s + '.html', 'w') {|of| of.write chunk} idx += 1 end end

kawamori_t
質問者

お礼

回答ありがとうございました。 Perl/Ruby/Python全てを嗜んでおられるとは凄いですね。 見習って私も取得に励みます。 分割プログラム早速試してみます!

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

テキストファイルのHTML化って具体的には何をするんですか? たぶん分割してできたファイルの拡張子を .htmlにするだけではないですよね。

kawamori_t
質問者

補足

コメントありがとうございます。 説明不足で申し訳ありません。 作成した文書をアップして携帯電話で読めるようにしたいのです。 1ページで表示すると量が多いので何ページかに分割たいのです。 あらかじめHTMLのテンプレートを作ってあるので 分割したテキストをそこに埋め込みたいと思っています。 またファイルのナンバーにあわせて前後へのリンクを作る予定ではありますが この部分に関しては自分で追加できると考えているのであえて質問にはあげませんでした。 例)2.htmlの場合 <html> <テンプレート> 分割したテキスト:2番目(改行の必要なし) <テンプレート> <a href="1.html" accesskey="">1.前へ</a> 2ページ  <a href="2.html" accesskey="3">3.次へ</a> </html>

関連するQ&A