kumitatepazuru's blog

中学生のメモブログ。みんなの役に立ちたい。

libscipsのプログラムレベルのお話(α0.0.3) 〜前回のプログラムなおすの巻〜

今回、前回のlibscips α0.0.2の問題を修正した。それだけの変更だが、一応。

前回の記事

kumitatepazuru.hatenablog.com

エラーのバグ修正の応急処置をした。

どう直したか

サッカーから届くメッセージはS式で書かれている。そのS式の解析で詰まっていた。それを、調べに調べて解析方法を見つけた。詳しくは以下のサイトを参照してほしい。

kumitatepazuru.hatenablog.com

sexpdataと言うやつを使った。ちょっと癖が強いのだが、上記の記事の通り、解決方法もかんがえた。

どんな癖?

変換後の型がSymbolという型になるということ&数字が文字列にならないこと。解決方法はこちら。

from sexpdata import Symbol, loads


def func(text):
    if type(text) == Symbol:
        return text.value()
    elif type(text) == list:
        return tostring(text)
    else:
        return str(text)


def tostring(text):
    return list(map(func,text))

tostring(loads("""(hello! hhh (12345 "('$%RRR") (asdf 2222))""")) # ['hello!', 'hhh', [12345, "('$%RRR"], ['asdf', 2222]]

このように、map関数を使い、変換後のデータをtype別に分けて変換、文字列にしている。

もう一個の修正

このsexpdataというライブラリは外部ライブラリでpypiから入手する。なので、requirement.txtを今回作成した。 これからlibscipsを使う方はまず

pip install -r requirement.txt

をしてほしい。

最後に

学校のテスト疲れた。


個人的な質問等はこちらまで。

https://forms.gle/V6NRhoTooFw15hJdA

また、自分が参加しているRobocup soccer シミュレーションリーグのチームでは参加者募集中です!活動の見学、活動に参加したい方、ご連絡お待ちしております!

詳しくはこちら

kumitatepazuru.github.io