python: 文字列操作 len()、splitline()、split()、正規化と正規表現
備忘録です。
文字列を操作するための関数をまとめた備忘録。
pandas内の文字列の文字数をカウント len()
こんな感じのアンケートをまとめたデータがあったとして、comment列の文字数を数えたいと思ったときにlen()関数を使うと文字列がカウントできる。
文字列を改行で分割してリスト化splitlines()
下記のような文字列があったとする。
words = 'すもも\t名詞,一般,*,*,*,*,すもも,スモモ,スモモ\nも\t助詞,係助詞,*,*,*,*,も,モ,モ\nもも\t名詞,一般,*,*,*,*,もも,モモ,モモ\nも\t助詞,係助詞,*,*,*,*,も,モ,モ\nもも\t名詞,一般,*,*,*,*,もも,モモ,モモ\nの\t助詞,連体化,*,*,*,*,の,ノ,ノ\nうち\t名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ\nEOS\n'
これを改行で分割してリスト化してくれるのがsplitlines()
文字列を分割 split()・・・引数なし
上記のインデックス0、つまり「'すもも\t名詞,一般,*,*,*,*,すもも,スモモ,スモモ',」
この部分を分割したい。引数なしでsplitを使うと空白文字で分割。空白文字にはスペースや改行\n, タブ\tが含まれ、連続する空白文字はまとめて処理されるので、それらが混載している場合一度に分割が可能。「,」は分割されない。
正規化・・・unicodeの変換で数値は半角、かなは全角に変換
unicodedataライブラリを使用して文章の正規化を行う
※表現が複数混在して良いことになっているが、混在したままでは不便であるため、どれかに統一することが正規化 (Normalization)
正規表現 re.compile
コンパイルオブジェクトを作成して必要な部分をmatchで抜き出す。
正規表現の記号
「^(ハット)」 行の先頭
「$」 行の末尾
「.」 改行(\n、\r)を除くすべての文字
「+(プラス)」 直前のパターンの1回以上の繰り返しを表します。
「?」 0回か、1回の繰り返し
「()」 カッコ内のパターンにマッチした文字列を後方参照できる