maketrans
を使用してstr.translate
メソッドに渡す変換テーブルを作成する必要があります。
Python 3.1以降では、maketrans
はstatic-method on the str
typeになりました。これを使用して、句読点の翻訳をNone
にすることができます。
import string
# Thanks to Martijn Pieters for this improved version
# This uses the 3-argument version of str.maketrans
# with arguments (x, y, z) where 'x' and 'y'
# must be equal-length strings and characters in 'x'
# are replaced by characters in 'y'. 'z'
# is a string (string.punctuation here)
# where each character in the string is mapped
# to None
translator = str.maketrans('', '', string.punctuation)
# This is an alternative that creates a dictionary mapping
# of every character from string.punctuation to None (this will
# also work)
#translator = str.maketrans(dict.fromkeys(string.punctuation))
s = 'string with "punctuation" inside of it! Does this work? I hope so.'
# pass the translator to the string's translate method.
print(s.translate(translator))
これは、出力すべきは:
string with punctuation inside of it Does this work I hope so
パーフェクト、優れた作品! – cybujan
(@birryreeの例(http://stackoverflow.com/a/34294398/1656850)は、string.translateの廃止勅令に同意しません。 – boardrider
あなたは正しいです。その点について私は誤解していました。コールシグネチャのみが変更されました。str.translateはテーブルをパラメータとして取り、deletecharsを削除しません(birryreeの回答を参照)。私はそれに応じて私の答えを編集します。 – elzell