ฉันจะจับคู่สตริงใน python ได้อย่างไร [ซ้ำ]
Sep 07 2020
ฉันมีดาต้าเฟรมที่มีสองวลีที่คล้ายกันเช่น 'Hello World' และ 'Hello World 1' ฉันต้องการจับคู่เฉพาะสตริง 'Hello World'
ฉันกำลังใช้: dataframe ['Phrase']. str.match ('Hello World') แต่สิ่งนี้ส่งกลับทั้งวลี 'Hello World' และ 'Hello World 1' อย่างชัดเจน มีวิธีจับคู่เฉพาะวลีเท่านั้นหรือไม่?
คำตอบ
Pitto Sep 07 2020 at 02:28
คุณสามารถใช้ RegEx เพื่อรับผลลัพธ์ดังกล่าว:
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 แสดงขอบเขตของคำ
C.Sanchez Sep 07 2020 at 02:30
นิพจน์ทั่วไปบนสตริง
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
สิ่งที่คุณต้องมีคือทำการทดสอบความเท่าเทียมกัน:
dataframe['Phrase'] == 'Hello World'
สิ่งนี้จะส่งคืนอาร์เรย์บูลีนที่คล้ายคลึงกับกรณีการจับคู่สตริงย่อยของคุณ แต่ต้องการการจับคู่แบบตรงทั้งหมด
ตัวอย่าง:
a.csv
Phrase,Other_field
Hello World,1
Hello World 1,2
Something else,3
ดาต้าเฟรม:
>>> 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
สตริงย่อยของคุณตรงกัน:
>>> dataframe['Phrase'].str.match('Hello World')
0 True
1 True
2 False
Name: Phrase, dtype: bool
ตรงกันทุกประการ:
>>> dataframe['Phrase'] == 'Hello World'
0 True
1 False
2 False
Name: Phrase, dtype: bool