我有一个字符串列表和一个后缀列表。如果字符串包含其中一个后缀,如何从字符串中删除该特定字符串?
{{1}}
答案 0 :(得分:1)
我建议将词干删除分离到自己的功能中,然后使用列表推导或单独的功能作为整个列表。这是实现目标的一种方式
def remove_stems(word, stems):
for stem in stems:
if word.endswith(stem):
return word[:-len(stem)]
else:
return word
b_without_stems = [remove_stem(word, stems) for word in b]
答案 1 :(得分:1)
假设您要删除找到的第一个后缀
def stemming(strings, endings):
for i, string in enumerate(strings):
for ending in endings:
if string.endswith(ending):
strings[i] = string[:-len(ending)]
continue
答案 2 :(得分:0)
您需要知道找到了哪个结尾,因此您需要一次检查一个结尾,而不是一次性检查它们。找到结尾后,可以使用切片将其切掉。
#!/usr/bin/env bash
# Vagrant instance provision script
# Php 7.0
sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update
# Apache 2.4
sudo add-apt-repository ppa:ondrej/apache2 -y
sudo apt-get update
sudo apt-get install apache2 -y
if ! [ -L /var/www ]; then
rm -rf /var/www/html
ln -fs /vagrant /var/www/html
fi
# Changed this line
sudo apt-get install php7.0 -y
更好的方法是使用正则表达式:
def stemming():
for i, word in enumerate(b):
for suffix in y:
if word.endswith(suffix):
b[i] = word[:-len(suffix)]
break
然后你可以使用列表理解轻松地进行词干化:
import re
suffix = re.compile("(%s)$" % "|".join(y))
def stemming():
for i, word in enumerate(b):
b[i] = suffix.sub("", word)