可能重复:
Delete Chars in Python
我想知道如何在python
中的关键字后删除字符串我将在txt文件中获取行
我可以用什么方法来做这件事。
例如:
“我有一本书要读。”
我要删除“book”之后的所有单词。
答案 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)