Ruby 初心者スレッド Part 67 (724レス)
1-

380: (ワッチョイ e584-vAK8) 2022/02/01(火)16:13 ID:UfZW0QsA0(1) AAS
>>379
どこかの某県図書館だな
結局、アレは業者がアレだったな
381: (ワッチョイ fa33-5lIn) 2022/02/01(火)17:31 ID:zzLecfCS0(1) AAS
>>378
こんなとこで聞くことやないやろ!w

こういうとこのが?
外部リンク:www.ruby-lang.org
382: (オッペケ Srbd-+Ul7) 2022/02/01(火)20:03 ID:TQ6+L4kbr(1) AAS
>>378
協力よろしくお願いします
外部リンク:bugs.ruby-lang.org
383
(1): (テテンテンテン MM8f-QsY6) 2022/02/05(土)20:00 ID:lkKOvV4nM(1) AAS
[1,2,3].each{ |i|
next i>2
}
がエラーにならずなかなか原因がわからなかった
正解は
[1,2,3].each{ |i|
next if i>2
}
384
(1): (アウアウエー Sadf-JWMU) 2022/02/06(日)02:49 ID:wRRLv8q1a(1) AAS
>>383
next(exit_value)
break(exit_value)
という構文があって、実行された時のブロックの戻り値が指定した引数の値になる

loop{ break }
=> nil

loop{ break 10 }
=> 10

[1,2,3,4].map do |num|
next 'even' if num.even?
省3
385: (テテンテンテン MM8f-QsY6) 2022/02/07(月)15:54 ID:UFoAEHlFM(1) AAS
>>384
ありがとうございました、なるほどでした
nextに戻り値は想定外で、別の原因を探していました
386: (ワッチョイ bf8c-YRqB) 2022/02/08(火)00:35 ID:rEpsZFEq0(1) AAS
ほ〜、知らんかった
387
(1): (ワッチョイ d75c-z7Dg) 2022/02/11(金)05:43 ID:kL9RKZ580(1/2) AAS
nokogiriでhtmlパースをしようと触っているのですが、
DOMの子要素から絞り込みはできないのでしょうか

document.xpath('//div[@class="main"]').each |node|
node.css('div')
↑これだとclass=mainの子要素全体が取れるのですが

node.xpath('//div[@class="target"]')
↑これだとDOM全体から取ってきてしまいます

node.search('//div[@class="target"]')
↑これも同様でした
388
(1): (オッペケ Sr0b-Hkqy) 2022/02/11(金)07:45 ID:3E0z2JyYr(1) AAS
>>387
node.xpath('.//div[@class="target"]')

node.search('.//div[@class="target"]')
389
(1): (ワッチョイ 9fe0-yw1q) 2022/02/11(金)07:51 ID:tPFLgtIg0(1) AAS
XPathの仕様みるのが先やん
外部リンク[html]:triple-underscore.github.io
390: (ワッチョイ d75c-z7Dg) 2022/02/11(金)08:15 ID:kL9RKZ580(2/2) AAS
>>388
取れました!ありがとうございます!
>>389
XMLパスという仕様書があるのですね
初めて知りました
リンク先まで教えていただきありがとうございます!
391: (ワッチョイ ff2c-2zGl) 2022/02/11(金)15:10 ID:901NTZe+0(1/2) AAS
一旦、ある要素を取得してから、その子孫要素に限定して、
さらに要素を取得していく事もできる

一旦、div.x を取得してから、その子孫内のdiv を取得する

doc = Nokogiri::HTML( <<EOT )
<html><body>
<div class="x"><div class="y"><div class="z"></div></div></div>
<div class="x"><div class="a"></div></div>
</body></html>
EOT

doc.xpath( '//div[@class="x"]' ).each do |x|
省8
392: (ワッチョイ 37d9-zD41) 2022/02/11(金)15:21 ID:fEekYUc10(1) AAS
あーあ、やっちゃったね
スクレイピングに手を出したら逮捕されるよ
nokogiriもアンインストールしたほうがいい
393: 391 (ワッチョイ ff2c-2zGl) 2022/02/11(金)18:40 ID:901NTZe+0(2/2) AAS
XPath よりも、CSS Selector の方が可読性も高く、簡単。
XPathを使う事は、ほぼ無い

ある属性を持った要素の親要素を取得するとか、かなり複雑なケースに限定される
394
(1): (ワッチョイ 6b2c-bfGZ) 2022/03/08(火)08:30 ID:uRRrzdTb0(1) AAS
配列内の要素の出現回数を求める

ary = [ 1, "a", 2, "b", "a", 1, "a" ]

p results = ary.each_with_object( Hash.new( 0 ) ){ |elem, hash| hash[ elem ] += 1 }
#=> { 1=>2 "a"=>3 2=>1 "b"=>1 }

Ruby には、下のPython のcollections.Counter みたいな関数がありますか?

import collections
省6
395: (オッペケ Sr4f-wzO4) 2022/03/08(火)08:39 ID:rK542qf7r(1) AAS
>>394
ない。
できてこんなもん。
ary.uniq.group_by{|i|ary.count i}
=> {2=>[1], 3=>["a"], 1=>[2, "b"]}
396: (ワッチョイ 1f08-i/qD) 2022/03/08(火)11:58 ID:yCGAKR370(1) AAS
愚直に書くと
ary.group_by(&:itself).transform_values(&:size)
=> {1=>2 "a"=>3 2=>1 "b"=>1}
397: (ブーイモ MM7f-5+bU) 2022/03/08(火)13:18 ID:4udJjeRKM(1) AAS
each_with_objectのほうが少しシンプルだけど
他の言語だと使えないからreduce使ってる
uniqとかgroupbyはやや効率悪い気がする
398: (ワッチョイ fb5f-U5pU) 2022/03/09(水)01:16 ID:bFH5rQfw0(1) AAS
tally
外部リンク[html]:docs.ruby-lang.org
399: (アウアウエー Sa3f-6iqn) 2022/03/09(水)05:08 ID:xyP8cJI4a(1) AAS
[1, "a", 2, "b", "a", 1, "a"].tally
=> {1=>2 "a"=>3 2=>1 "b"=>1}

ほ〜
1-
あと 325 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.008s