[過去ログ] Perlについての質問箱 64箱目 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
626: 2020/08/13(木)15:32 ID:g8OxF1lY(1/2) AAS
UTF8からShift-JISに変換し、その中で変換できなかった文字列はhtml数値文字参照に変換したいです

(UTF8)楽しいね🙂→(Shift-JIS)楽しいね🙂 ;
このような風にです

こちらのサイトを参考にして↓のように書いてみたのですが
https://blog.netandfield.com/shar/i/details/004482.html#home

use Encode;
my $word = "楽しいね🙂";
Encode::from_to( $word, "UTF8", "Shift_JIS", Encode::FB_HTMLCREF);
print "$word";

(結果)
省5
627
(1): 2020/08/13(木)16:19 ID:HLH3bdVq(1) AAS
その出力先(ターミナル?コンソール?)は、そもそもシフトJISテキストを表示できるのか?
できない場合は、プログラムは関係なく、ターミナルが文字化けする。

ためしにtext.htmlのようなファイルに出力してから、その内容を確認したら?
628
(2): 2020/08/13(木)16:44 ID:DQVPr3Tq(1) AAS
前にやろうとして諦めた
pythonだと簡単

try:
  str_sjis = str.encode("CP932")
except UnicodeEncodeError:
  print str.encode("utf-8")
629: 2020/08/13(木)16:48 ID:/BJ4BGZD(1) AAS
>>628
そのレベルならPerlでも簡単
絵文字だけ抜き出してHTML特殊文字化 でしょ
630: 2020/08/13(木)17:00 ID:g8OxF1lY(2/2) AAS
>>627
ターミナルです
ファイルに出力してそれをShift-JISとして開いたら文字化けもなく見ることができました
内部的には問題なかったのですね
ありがとうございました
631: 2020/08/13(木)22:25 ID:L5UfXSE8(1) AAS
>>628
笑わすんじゃねーw
632: 2020/08/15(土)08:35 ID:ACgG3ouC(1/2) AAS
プロトタイプ属性の指定がどうやってもできん

use feature 'signatures';
sub foo :prototype($$) ($left, $right) {
return $left + $right;
}

これで構文エラーになる理由が全く分からん
633: 2020/08/15(土)10:52 ID:N6F3nDZU(1) AAS
釣れますか?
634: 2020/08/15(土)12:09 ID:ybTBju6n(1) AAS
同時には使えんやろ
635: 2020/08/15(土)14:02 ID:ACgG3ouC(2/2) AAS
え????

use feature 'signatures';
sub NAME(SIG) BLOCK # with signature
sub NAME :ATTRS (SIG) BLOCK # with signature, attributes
sub NAME :prototype(PROTO) (SIG) BLOCK # with signature, prototype

構文こうなってるけど?
636
(2): 2020/08/15(土)15:48 ID:k2IZqmRY(1) AAS
以下のようなhtmlがあるとします
<div>
<p>AAA</p><p>BBB</p><p>CCC</p><p>DDD</p>
</div>
<p></p>の構文が4個の場合は、構文を文字列として2個ずつ別の変数に分けたいです。
($str1 に"<p>AAA</p><p>BBB</p>" 、 $str2に"<p>CCC</p><p>DDD</p>"
<p></p>の構文が6個の場合は3個ずつ、8個の場合は4個ずつ・・・と前半と後半で分けて
2つの変数に代入したいのですが、方法はあるでしょうか?
637: 2020/08/15(土)16:19 ID:V1MJgzDn(1) AAS
そら一発では無理だろう
一旦配列に入れてから真ん中で分ける
638: 2020/08/15(土)16:34 ID:o+i8zw5r(1) AAS
釣りに引っ掛かるな
639: 2020/08/15(土)17:04 ID:gFfdk9Ij(1) AAS
>>636
はい。あります。
640
(2): 2020/08/15(土)19:50 ID:dQrORRCv(1/2) AAS
ちょろい問題。単なる初心者で釣りなんかじゃないでしょう。

@foo = (); @bar = ();
while ($str =~ s{^[\s\S]*?<p>(.+?)</p>(.*)<p>(.+?)</p>[\s\S]*$}{$2}){
push @foo, $1;
unshift @bar, $3;
}
641: 2020/08/15(土)19:55 ID:dQrORRCv(2/2) AAS
2行目間違えてた。
while ($str =~ s{^[\s\S]*?<p>(.+?)</p>(.*)<p>(.+?)</p>[\s\S]*?$}{$2}){
642: 2020/08/15(土)20:01 ID:UM/CpThf(1/3) AAS
# 元ネタ
my $html = '<html><p>hoge1</p><p>hoge2</p><p>hoge3</p><p>hoge4</p><p>hoge5</p><p>hoge6</p><p>hoge7</p><p>hoge8</p><p>hoge9</p><p>hoge10</p></html>';

# 全部のpタグの中身を引っ掛ける

my @p_list = $html =~ /<p>(.+?)<\/p?/g;

# 引っかかった数取得

my $size = int(@p_list);
省5
643
(1): 2020/08/15(土)20:03 ID:UM/CpThf(2/3) AAS
なんだこの糞改行(´・ω・`)

# 全部のpタグの中身を引っ掛ける
my @p_list = $html =~ /<p>(.+?)<\/p>/g;

# 引っかかった数取得
my $size = int(@p_list);

# 前半と後半に分けて突っ込む
my @mae = @p_list[0..int($size/2)-1];
my @ato = @p_list[int($size/2)..$size-1];

# 結果表示テスト
print Dumper([\@mae, \@ato]);
644
(1): 2020/08/15(土)20:11 ID:UM/CpThf(3/3) AAS
俺のは巨大なHTMLだとメモリが死ぬ
安全策なら>>640
645: 2020/08/15(土)20:49 ID:ODJGcA2C(1) AAS
>>644
まあ、そんなに巨大だったら、どっちにしろ死ぬやろけどな。w
本気で心配するならチビチビつままないと。
1-
あと 357 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.135s*