Bir dizeyi tam olarak python'da nasıl eşleştiririm? [çiftleme]

Sep 07 2020

İki benzer ifadeye sahip bir veri çerçevem ​​var, örneğin 'Merhaba Dünya' ve 'Merhaba Dünya 1'. Yalnızca 'Merhaba Dünya' dizesiyle eşleştirmek istiyorum.

Şu anda kullanıyorum: dataframe ['Cümle']. Str.match ('Merhaba Dünya') Ancak bu açıkça hem 'Merhaba Dünya' hem de 'Merhaba Dünya 1' ifadelerini döndürür. Sadece kelime öbeğiyle tam olarak eşleşmenin bir yolu var mı?

Yanıtlar

Pitto Sep 07 2020 at 02:28

Bu tür bir sonucu elde etmek için RegEx'i kullanabilirsiniz:

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))

\ b bir sözcük sınırını belirtir.

C.Sanchez Sep 07 2020 at 02:30

Dizede normal ifade.

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

Tek ihtiyacınız olan bir eşitlik testi yapmak:

dataframe['Phrase'] == 'Hello World'

Bu, alt dize eşleme durumunuza benzer bir boole dizisi döndürür, ancak tam eşleşme gerektirir.

Misal:

a.csv

Phrase,Other_field
Hello World,1
Hello World 1,2
Something else,3

Veri çerçevesi:

>>> 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

Alt dize eşleşmeniz:

>>> dataframe['Phrase'].str.match('Hello World')
0     True
1     True
2    False
Name: Phrase, dtype: bool

Tam eşleşme:

>>> dataframe['Phrase'] == 'Hello World'
0     True
1    False
2    False
Name: Phrase, dtype: bool