月別アーカイブ: 2019年2月

BeautifulSoupにてあるタグ配下のhtmlをそのまま出力したい

あるタグ配下の文字列を取得したい場合は、.stringを用いて以下のように書ける。
例:

from bs4 import BeautifulSoup

html = "<div>test</div>"
soup = BeautifulSoup(html, "html.parser")
print(soup.find("div").string)
出力結果test

ただし、取得したタグ配下に、さらにほかのタグがあると.stringプロパティはNoneを返す。
そのような場合は、
1. .textプロパティを用いる(配下のタグはすべて削除される)
2. str関数で文字列に変換する(自身のタグも出力される)
3. .contentsにて、配下のタグを全て取得し文字列に変換する(自身のタグは出力されない)
などが考えられると思う。

例 :

from bs4 import BeautifulSoup

html = "<div>test <br>hoge1 <div><div>hoge2</div></div> <br>hoge3</div>"
soup = BeautifulSoup(html, "html.parser")
first_div = soup.find("div")

print("0 : " + str(first_div.string))
print("1 : " + first_div.text)
print("2 : " + str(first_div))
print("3 : " + "".join(map(str, first_div.contents)))
出力結果0 : None
1 : test hoge1 hoge2 hoge3
2 : <div>test <br/>hoge1 <div><div>hoge2</div></div> <br/>hoge3</div>
3 : test <br/>hoge1 <div><div>hoge2</div></div> <br/>hoge3

3に関してはもう少しスマートなやり方がありそうな気がする。

paizaスキルチェックに挑戦

Sランク取ったった😎

https://paiza.jp/challenges/share/D5oo984MrCofrPA34Q1chyAIG73KEvT10ZKrIgEz3Bg?source=social

想定回答時間40分だから25秒オーバーしてるんだけどね……
オーバーするとスコアが線形に減点されていくらしいけど、切り上げで100点になったぽい。

この順位は、問題解いた人のうち50名を抽出した中での順位のようだ。
ランダムに 50名抽出なら運次第で1位取れるんじゃないかと考えて(実力で1位を取るという発想は無かった)、何問かSランクの問題解いてみたけど、最高5位だった。
競技プログラミングやってるような人は、自分が40分かけて解いた問題を平気で10分台で解いてくるから怖い。どんな頭してんだ。
その手の人が結構いる感じで、運だけで1位取るのは相当厳しそうだ。

それともランダムに50名抽出じゃなくて、得点の分布から均一に50名抽出してたりするのだろうか。
もしそうだったら自分の実力だとどう頑張ってもこれ以上順位上げられそうにない。
蟻本を買えということだろうか。

問題は巷で言われてるほど簡単だとは思わなかったけど、paiza公式にあるようにプログラマーの2%しか解けないってことはさすがに無いように思う。
登録だけして放置してあるアカウントとかを含めると2%しか解けてないってことなのかな。
情報系の学校卒業した人の7割ぐらいなら、時間をかければ解ける難易度に感じた。

そろそろ再就職しないといけないから挑戦してみたんだけど、実際どれくらいの効果あるんかな…
どっか拾ってくれれば良いんだけどね(´・ω・)