重複の可能性:
Python で文字を削除する
Pythonでキーワードの後の文字列を削除する方法を知りたい
txtファイルに行を取得します
これを行うにはどのような方法を使用できますか。
例えば:
「読みたい本があります。」
「book」以降の単語をすべて削除したい。
重複の可能性:
Python で文字を削除する
Pythonでキーワードの後の文字列を削除する方法を知りたい
txtファイルに行を取得します
これを行うにはどのような方法を使用できますか。
例えば:
「読みたい本があります。」
「book」以降の単語をすべて削除したい。
「本」自体を含む最初の「本」以降のすべてを削除するには:
s = "I have a book to read."
print(s.partition("book")[0])
「本」という単語を保持するには:
print(''.join(s.partition("book")[:2]))
文字列に「本」が存在するかどうかに関係なく、どちらも機能します。
これを行うさらに別の方法は、を使用することですre.sub
。(出力はコードとインターリーブされて表示されます。)
txt = 'I have a book to read'; key='book'
str = re.sub(key+'.*', key, txt)
str
'I have a book'
txt = 'I have a look to read'; key='book'
str = re.sub(key+'.*', key, txt)
str
'I have a look to read'
これを行うにはいくつかの方法があります。
mystr = "読みたい本があります。" キーワード = '本'
方法 1 :
def foo(mystr, keyword):
try:
i = mystr.index(keyword)
return mystr[:i+len(keyword)]
except ValueError:
return mystr
方法 2 :
def foo(mystr, keyword):
i = mystr.find(keyword)
if i >= 0:
return mystr[:i+len(keyword)]
else:
return mystr
方法 3 :
def foo(mystr, keyword):
return ''.join(mystr.partition(keyword)[:2])
世界の最初の文字のインデックスを返す攪拌メソッド find() を使用します。
str = "i have a book to read"
print str[:str.find("book") + len("book")]
これは、「i have a book to read」という文字列に「book」が存在するためにのみ機能します。そうでない場合、このソリューションは期待どおりに機能しません。
これには正規表現が適しています。
import re
m = re.match('(.*book)', line)
if m:
line = m.group(1)
また
line = re.sub('book.*', 'book', line)