Como faço para combinar uma string exatamente em python? [duplicado]

Sep 07 2020

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

Pitto Sep 07 2020 at 02:28

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.

C.Sanchez Sep 07 2020 at 02:30

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.
    ....
    
alani Sep 07 2020 at 02:30

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