LoginSignup
1

More than 5 years have passed since last update.

文字列のリストを正規表現でフィルター

Last updated at Posted at 2018-05-22

形態素解析を行った後の行程で、不要な文字列の要素をリストから削除したり、特定の文字列の要素のリストだけ抽出したりしたかったケースがあったので、その備忘録。

  • 文字列のリストの場合


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)]

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1