形態素解析を行った後の行程で、不要な文字列の要素をリストから削除したり、特定の文字列の要素のリストだけ抽出したりしたかったケースがあったので、その備忘録。
- 文字列のリストの場合
import re
words = ["あかさたな","あかさ","あか","あ", "アカサタナ","アカサ","アカ", "ア", "あカさタな", "挨拶", "朝", "夜露死苦"]
# ひらがな一文字と二文字をリストから抽出
hiragana = [x for x in kana1 if re.match('[ぁ-ん]{1,2}$' , x)]
print (hiragana)
# ['あか', 'あ']
# カタカナ一文字と二文字をリストから除外
katakana = [x for x in kana1 if not re.match('[ァ-ヶ]{1,2}$' , x)]
print (katakana)
# ['あかさたな', 'あかさ', 'あか', 'あ', 'アカサタナ', 'アカサ', 'あカさタな', '挨拶', '朝', '夜露死苦']
# 漢字一文字と二文字をリストから抽出
kanji = [x for x in kana1 if re.match('[一-龠]{1,2}$' , x)]
print (kanji)
# ['挨拶', '朝']
- タプルのリストの場合
import re
words = [("あかさたな", 5), ("あかさ", 9), ("あか", 3), ("あ", 5), ("アカサタナ", 6), ("アカサ", 7),("アカ", 2),("ア", 10),("あカさタな", 8)]
# タプルの一つ目の要素でフィルター(ひらがな一文字と二文字をリストから除外)して、一つ目の要素だけのリストを返したい。
filtered1 = [x for (x ,y) in words if not re.match('[ぁ-ん]{1,2}$' , x)]
print (filtered1)
# ['あかさたな', 'あかさ', 'アカサタナ', 'アカサ', 'アカ', 'ア', 'あカさタな']
# タプルの一つ目の要素でフィルター(ひらがな一〜三文字をリストから除外)して、タプルのリストを返したい。
filtered2 = [(x ,y) for (x ,y) in words if not re.match('[ぁ-ん]{1,3}$' , x)]
print (filtered2)
# [('あかさたな', 5), ('アカサタナ', 6), ('アカサ', 7), ('アカ', 2), ('ア', 10), ('あカさタな', 8)]