u++の備忘録

言語処理100本ノック 2020「04. 元素記号」

問題文

nlp100.github.io

問題の概要

①文を単語に分割する②各単語の先頭の1文字もしくは2文字を取り出すーーの2段階で処理します。②の処理では、条件分岐が必要です。

①の処理は「03. 円周率」と同様です。

②の条件分岐に当たって、単語の順番情報が必要なため「enumerate(リスト)」を利用します。第2引数として「1」を与え、インデックスを0ではなく1始まりにしています。

最後にタプルのリストを「dict()」で囲うことで、辞書型のデータに変換しました。

def extract_chars(i, word):
    if i in [1, 5, 6, 7, 8, 9, 15, 16, 19]:
        return (word[0], i)
    else:
        return (word[:2], i)


raw_text = 'Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.'
text = raw_text.replace('.', '').replace(',', '')
ans = [extract_chars(i, w) for i, w in enumerate(text.split(), 1)]
print(dict(ans))