2

可能重复:
在 Python 中删除字符

我想知道如何在python中删除关键字后的字符串

我将在 txt 文件中获取行

我可以用什么方法来做到这一点。

例如:

“我有一本书要读。”

我想删除“书”之后的所有单词。

4

5 回答 5

5

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

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

要保留“书”这个词:

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

无论字符串中是否存在“book”,两者都有效。

于 2012-09-20T04:48:22.930 回答
1

做这件事有很多种方法:

mystr = "我有一本书要读。" 关键字 = '书'

方法一

def foo(mystr, keyword):
    try:
        i = mystr.index(keyword)
        return mystr[:i+len(keyword)]
    except ValueError:
        return mystr

方法二

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 回答
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 回答
0

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

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

这只会起作用,因为“book”存在于字符串“i have a book to read”中。如果不是这种情况,则此解决方案将无法按预期工作

于 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 回答