从字符串中删除短语列表

时间:2018-02-22 21:43:15

标签: python

我有一系列短语:

bannedWords = ['hi', 'hi you', 'hello', 'and you']

我想拍一个像"嗨,你是怎么做的,你做的"得到这个:

", how are tim doing"

确切的案例匹配是好的 - 对不起,应该澄清。

3 个答案:

答案 0 :(得分:3)

由于你想要删除额外的空格,下面的正则表达式应该更好:

s = "Hi, How are Tim and you doing"
bannedWords = ['hi', 'hi you', 'hello', 'and you']
for i in bannedWords: 
    s = re.sub(i + "\s*", '', s, flags = re.I)
print s
# ', How are Tim doing'

答案 1 :(得分:2)

您可以使用带有标志的public class AlgorithmModel { private Random random = new Random(); private List<Integer[]> list = new ArrayList<Integer[]>(); private List<Integer[]> randomGenerate() { List<Integer[]> list = new ArrayList<Integer[]>(); int size = 5; for (int i = 0; i < 10; i++) { list.add(generateArr(size)); size++; } return list; } private Integer[] generateArr(int n) { Integer[] arr = new Integer[n]; for (int i = 0; i < arr.length; i++) { arr[i] = random.nextInt(101); } return arr; } public AlgorithmModel() { list = randomGenerate(); } public List<Integer[]> getList() { return list; } public void sortList(List<Integer[]> list) { for (Integer[] integers : list) { sort(integers); } } private void sort(Integer[] arr) { //some sort algorithm } } 以不区分大小写的方式执行此操作。

re.sub

答案 2 :(得分:1)

使用正则表达式,您可以使用|加入要删除的单词。我们还希望删除任何带有一个空白空间的多个空白空间。这确保我们只进行两次操作。

import re

def remove_banned(s,words):
    pattern = '|'.join(words)
    s = re.sub(pattern, '', s, flags = re.I) # remove words
    s = re.sub('\s+', ' ', s, flags = re.I) # remove extra blank space'
    return s

bannedWords = ['hi', 'hi you', 'hello', 'and you']
s = "Hi, How are Tim and you doing"

print(remove_banned(s,bannedWords))

返回:

, How are Tim doing