我有一系列短语:
bannedWords = ['hi', 'hi you', 'hello', 'and you']
我想拍一个像"嗨,你是怎么做的,你做的"得到这个:
", how are tim doing"
确切的案例匹配是好的 - 对不起,应该澄清。
答案 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