我要删除所有包含特定子字符串的单词。
Sentence = 'walking my dog https://github.com/'
substring = 'http'
# Remove all words that start with the substring
#...
result = 'walking my dog'
答案 0 :(得分:1)
这会尊重字符串中的原始间距,而不必花费太多时间。
import re
string = "a suspect http://string.com with spaces before and after"
starts = "http"
re.sub(f"\\b{starts}[^ ]*[ ]+", "", string)
'a suspect with spaces before and after'
答案 1 :(得分:0)
我们可以使用一种简单的方法。
sentence
分解为单词substring
并将其删除>>> sentence = 'walking my dog https://github.com/'
>>> substring = 'http'
>>> f = lambda v, w: ' '.join(filter(lambda x: w not in x, v.split(' ')))
>>> f(sentence, substring)
'walking my dog'
说明:
1. ' '.join(
2. filter(
3. lambda x: w not in x,
4. v.split(' ')
6. )
7. )
1
以加入星标。 2
用于过滤4
中的所有元素,从而将字符串拆分为单词。要过滤的条件是substring not in word
。 not in
进行了O(len(substring) * len(word))
复杂度比较。
注意:唯一可以加快的步骤是第3
行。您正在将单词与常量字符串进行比较,因此可以使用Rabin-Karp String Matching
在O(len(word))
中查找字符串,或者使用Z-Function
在O(len(word) + len(substring))
中查找字符串