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
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'