1. ホーム
  2. python

[解決済み] Python、文字列からアルファベット以外の文字をすべて取り除く

2022-11-05 08:10:10

質問

PythonのMapReduceで単語数カウントのプログラムを書いています。問題は、データ中に多くの非アルファベット文字が散らばっていることです。 Pythonで文字列から英数字以外を取り除く という投稿があり、正規表現を使った良い解決策が紹介されているのですが、どのように実装すれば良いのかわかりません。

def mapfn(k, v):
    print v
    import re, string 
    pattern = re.compile('[\W_]+')
    v = pattern.match(v)
    print v
    for w in v.split():
        yield w, 1

ライブラリの使い方がよくわからないのですが re をどのように使用するのか、あるいはそれどころか正規表現を使用するのか、よくわかりません。入力された文字列 (本の行) に正規表現パターンを適用する方法がわかりません。 v を適切に適用して、英数字以外の文字がない新しい行を取得する方法がわかりません。

提案ですか?

どのように解決するのですか?

使用方法 re.sub

import re

regex = re.compile('[^a-zA-Z]')
#First parameter is the replacement, second parameter is your input string
regex.sub('', 'ab3d*E')
#Out: 'abdE'

あるいは、特定の文字のセットだけを削除したい場合(入力にアポストロフィがあってもいいように...)には

regex = re.compile('[,\.!?]') #etc.