2

重複の可能性:
Python で文字を削除する

Pythonでキーワードの後の文字列を削除する方法を知りたい

txtファイルに行を取得します

これを行うにはどのような方法を使用できますか。

例えば:

「読みたい本があります。」

「book」以降の単語をすべて削除したい。

4

5 に答える 5

5

「本」自体を含む最初の「本」以降のすべてを削除するには:

s = "I have a book to read."
print(s.partition("book")[0])

「本」という単語を保持するには:

print(''.join(s.partition("book")[:2]))

文字列に「本」が存在するかどうかに関係なく、どちらも機能します。

于 2012-09-20T04:48:22.930 に答える
1

これを行うさらに別の方法は、を使用することです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'
于 2012-09-20T05:04:15.680 に答える
1

これを行うにはいくつかの方法があります。

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])
于 2012-09-20T04:49:05.553 に答える
0

世界の最初の文字のインデックスを返す攪拌メソッド find() を使用します。

str = "i have a book to read"
print str[:str.find("book") + len("book")]

これは、「i have a book to read」という文字列に「book」が存在するためにのみ機能します。そうでない場合、このソリューションは期待どおりに機能しません。

于 2012-09-20T04:42:13.320 に答える
0

これには正規表現が適しています。

import re
m = re.match('(.*book)', line)
if m:
    line = m.group(1)

また

line = re.sub('book.*', 'book', line)
于 2012-09-20T04:45:47.303 に答える