Como faço para combinar uma string exatamente em python? [duplicado]
Eu tenho um dataframe que tem duas frases semelhantes, por exemplo 'Hello World' e 'Hello World 1'. Desejo corresponder apenas a string 'Hello World'.
No momento, estou usando: dataframe ['Phrase']. Str.match ('Hello World') Mas isso obviamente retorna as frases 'Hello World' e 'Hello World 1'. Existe uma maneira de combinar apenas a frase exatamente?
Respostas
Você pode usar RegEx para obter esse resultado:
import re
phrase_to_find = 'Hello World'
phrases = ['Hello World', 'Hello World 1']
for phrase in phrases:
if re.search(r'\b' + phrase + r'\b', phrase_to_find):
print('Found the following match: {}'.format(phrase))
the \ b está indicando um limite de palavra.
Expressão regular na string.
import re
...
...
if re.search(r'^Hello World$', data_frame_string):
# Then the string matches, do whatever with the string.
....
Tudo que você precisa é fazer um teste de igualdade:
dataframe['Phrase'] == 'Hello World'
Isso retornará um array booleano análogo ao seu caso de correspondência de substring, mas requer uma correspondência exata.
Exemplo:
a.csv
Phrase,Other_field
Hello World,1
Hello World 1,2
Something else,3
O dataframe:
>>> import pandas as pd
>>> dataframe = pd.read_csv('a.csv')
>>> dataframe
Phrase Other_field
0 Hello World 1
1 Hello World 1 2
2 Something else 3
Sua substring corresponde:
>>> dataframe['Phrase'].str.match('Hello World')
0 True
1 True
2 False
Name: Phrase, dtype: bool
A correspondência exata:
>>> dataframe['Phrase'] == 'Hello World'
0 True
1 False
2 False
Name: Phrase, dtype: bool