を取り除く:スプリットリストに文字列、アクセント付き文字や絵文字を残すが、私は、文字列を持っている場合は句読点
私は最高のようにのようにPythonで単語のリストに分割しない方法"O João foi almoçar :) ."
:
['O','João', 'foi', 'almoçar', ':)']
?
感謝:)
ソフィア
を取り除く:スプリットリストに文字列、アクセント付き文字や絵文字を残すが、私は、文字列を持っている場合は句読点
私は最高のようにのようにPythonで単語のリストに分割しない方法"O João foi almoçar :) ."
:
['O','João', 'foi', 'almoçar', ':)']
?
感謝:)
ソフィア
句読点はあなたの例のように、独自のスペースで区切られたトークンに該当する場合、それは簡単です:
>>> filter(lambda s: s not in string.punctuation, "O João foi almoçar :) .".split())
['O', 'Jo\xc3\xa3o', 'foi', 'almo\xc3\xa7ar', ':)']
これがない場合、このようなスマイリーの辞書を定義することができます(さらに追加する必要があります):
d = { ':)': '<HAPPY_SMILEY>', ':(': '<SAD_SMILEY>'}
その後、句読点が含まれていないプレースホルダとスマイリーの各インスタンスを置き換える(我々は句読点ではない<>
を考慮します):"O João foi almoçar <HAPPY_SMILEY> ."
に私たちを取得する
for smiley, placeholder in d.iteritems():
s = s.replace(smiley, placeholder)
を。私たち"O João foi almoçar <HAPPY_SMILEY>"
を与える
s = ''.join(filter(lambda c: c not in '.,!', list(s)))
:
私たちは、その後、句読点を取り除きます。
私たちは顔文字を元に戻すん:
for smiley, placeholder in d.iteritems():
s = s.replace(placeholder, smiley)
私たちは、その後分割どちら:
s = s.split()
を私たちの最終的な結果与える:['O', 'Jo\xc3\xa3o', 'foi', 'almo\xc3\xa7ar', ':)']
を。
は、関数にすべて一緒にそれを置く:
def split_special(s):
d = { ':)': '<HAPPY_SMILEY>', ':(': '<SAD_SMILEY>'}
for smiley, placeholder in d.iteritems():
s = s.replace(smiley, placeholder)
s = ''.join(filter(lambda c: c not in '.,!', list(s)))
for smiley, placeholder in d.iteritems():
s = s.replace(placeholder, smiley)
return s.split()
>>> import string
>>> [ i for i in s.split(' ') if i not in string.punctuation]
['O', 'João', 'foi', 'almoçar', ':)']
['O'、 'Jo \ xc6o'、 'foi'、 'almo \ x87ar'、 ':)'] – Edhowler
あなたは句読点や顔文字を区別する方法を教えてください。 – katrielalex