python如何删除关键字后的字符串

时间:2012-09-20 04:37:40

标签: python

  

可能重复:
  Delete Chars in Python

我想知道如何在python

中的关键字后删除字符串

我将在txt文件中获取行

我可以用什么方法来做这件事。

例如:

“我有一本书要读。”

我要删除“book”之后的所有单词。

5 个答案:

答案 0 :(得分:4)

删除第一本“书”之后的所有内容,包括“书本”本身:

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

保留“book”一词:

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

无论字符串中是否存在“book”,两者都能正常工作。

答案 1 :(得分:1)

有几种方法可以做到这一点:

mystr =“我有一本书要读。” keyword ='book'

方法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])

答案 2 :(得分:0)

使用stirng方法find()返回世界第一个字母的索引:

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

这只会因为“我有一本书要阅读”字符串中存在“book”而起作用。如果情况并非如此,则此解决方案无法按预期工作

答案 3 :(得分:0)

另一种方法是使用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'

答案 4 :(得分:-1)

正则表达式对此有好处:

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

line = re.sub('book.*', 'book', line)