web-dev-qa-db-ja.com

文字列から特定の単語を削除する方法は?

文字列から特定のWordを削除する必要があります。

しかし、私はpython stripメソッドは、順序付けられたWordを認識できないようです。パラメータに渡された文字を取り除くだけです。

例えば:

>>> papa = "papa is a good man"
>>> app = "app is important"
>>> papa.lstrip('papa')
" is a good man"
>>> app.lstrip('papa')
" is important"

特定のWordをPythonで削除するにはどうすればよいですか?

25
Zen

つかいます str.replace

>>> papa.replace('papa', '')
' is a good man'
>>> app.replace('papa', '')
'app is important'

または、 re を使用し、正規表現を使用します。これにより、先頭/末尾のスペースを削除できます。

>>> import re
>>> papa = 'papa is a good man'
>>> app = 'app is important'
>>> papa3 = 'papa is a papa, and papa'
>>>
>>> patt = re.compile('(\s*)papa(\s*)')
>>> patt.sub('\\1mama\\2', papa)
'mama is a good man'
>>> patt.sub('\\1mama\\2', papa3)
'mama is a mama, and mama'
>>> patt.sub('', papa3)
'is a, and'
45
metatoaster

最も簡単な方法は、単純に空の文字列に置き換えることです。

s = s.replace('papa', '')
7
iamdev

re.subで正規表現を使用することもできます:

article_title_str = re.sub(r'(\s?-?\|?\s?Times of India|\s?-?\|?\s?the Times of India|\s?-?\|?\s+?Gadgets No'',
                           article_title_str, flags=re.IGNORECASE)
2

文字配列で置換したい各Wordの先頭と末尾のインデックス値がわかっていて、その特定のデータチャンクのみを置換したい場合は、次のようにします。

>>> s = "papa is papa is papa"
>>> s = s[:8]+s[8:13].replace("papa", "mama")+s[13:]
>>> print(s)
papa is mama is papa

または、元のデータ構造も保持する場合は、辞書に保存できます。

>>> bin = {}
>>> s = "papa is papa is papa"
>>> bin["0"] = s
>>> s = s[:8]+s[8:13].replace("papa", "mama")+s[13:]
>>> print(bin["0"])
papa is papa is papa
>>> print(s)
papa is mama is papa
1
Michael Strobel