可能重复:
在 Python 中删除字符
我想知道如何在python中删除关键字后的字符串
我将在 txt 文件中获取行
我可以用什么方法来做到这一点。
例如:
“我有一本书要读。”
我想删除“书”之后的所有单词。
可能重复:
在 Python 中删除字符
我想知道如何在python中删除关键字后的字符串
我将在 txt 文件中获取行
我可以用什么方法来做到这一点。
例如:
“我有一本书要读。”
我想删除“书”之后的所有单词。
要删除第一本“书”之后的所有内容,包括“书”本身:
s = "I have a book to read."
print(s.partition("book")[0])
要保留“书”这个词:
print(''.join(s.partition("book")[:2]))
无论字符串中是否存在“book”,两者都有效。
做这件事有很多种方法:
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])
另一种方法是使用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'
使用stirng方法find()返回世界第一个字母的索引:
str = "i have a book to read"
print str[:str.find("book") + len("book")]
这只会起作用,因为“book”存在于字符串“i have a book to read”中。如果不是这种情况,则此解决方案将无法按预期工作
正则表达式对此有好处:
import re
m = re.match('(.*book)', line)
if m:
line = m.group(1)
或者
line = re.sub('book.*', 'book', line)