Estou trabalhando com Python v2 e estou tentando descobrir se você pode dizer se uma palavra está em uma string.
Encontrei algumas informações sobre como identificar se a palavra está na string - usando .find, mas existe uma maneira de fazer uma declaração SE. Eu gostaria de ter algo como o seguinte:
if string.find(word):
print 'success'
Obrigado por qualquer ajuda.
mas lembre-se de que isso corresponde a uma sequência de caracteres, não necessariamente a uma palavra inteira - por exemplo,
'word' in 'swordsmith'
é True. Se você deseja apenas combinar palavras inteiras, use expressões regulares:fonte
Se você deseja descobrir se uma palavra inteira está em uma lista de palavras separada por espaço, basta usar:
Este método elegante também é o mais rápido. Comparado às abordagens de Hugh Bothwell e daSong:
Edit: Uma ligeira variante dessa idéia para Python 3.6+, igualmente rápida:
fonte
contains_word("says", "Simon says: Don't use this answer")
find retorna um número inteiro que representa o índice de onde o item de pesquisa foi encontrado. Se não for encontrado, ele retornará -1.
fonte
Você pode dividir a seqüência de caracteres com as palavras e verificar a lista de resultados.
fonte
Esta pequena função compara todas as palavras de pesquisa em um determinado texto. Se todas as palavras de pesquisa forem encontradas no texto, retornará a duração da pesquisa ou
False
outra forma.Também suporta pesquisa de string unicode.
uso:
fonte
Se a correspondência de uma sequência de caracteres não for suficiente e você precisar corresponder palavras inteiras, aqui está uma função simples que realiza o trabalho. Basicamente, acrescenta espaços onde necessário e procura por isso na string:
Isso pressupõe que vírgulas e outras pontuações já foram removidas.
fonte
Como você está solicitando uma palavra e não uma string, gostaria de apresentar uma solução que não seja sensível a prefixos / sufixos e ignore maiúsculas e minúsculas:
Se suas palavras podem conter caracteres especiais regex (como
+
), será necessáriore.escape(word)
fonte
Maneira avançada de verificar a palavra exata que precisamos encontrar em uma sequência longa:
fonte
Usar regex é uma solução, mas é muito complicado para esse caso.
Você pode simplesmente dividir o texto em uma lista de palavras. Use o método split ( separator , num ) para isso. Retorna uma lista de todas as palavras da string, usando o separador como separador. Se o separador não for especificado, ele será dividido em todos os espaços em branco (opcionalmente, você pode limitar o número de divisões para num ).
Isso não funcionará para string com vírgulas etc. Por exemplo:
Se você também deseja dividir todas as vírgulas, etc., use o argumento separador como este:
fonte
mystring.lower().split()
eword.lower()
acho que isso também é mais rápido que o exemplo do regex.Você pode adicionar um espaço antes e depois da "palavra".
Desta forma, procura o espaço antes e depois da "palavra".
fonte