Python 如何检查字符串是否包含与字符串完全匹配的内容?
我正在检查我的dict密钥是否可以在字符串中找到。问题是我的代码不匹配整个字符串,而是遍历每个字符 我这样试过:Python 如何检查字符串是否包含与字符串完全匹配的内容?,python,string,pattern-matching,Python,String,Pattern Matching,我正在检查我的dict密钥是否可以在字符串中找到。问题是我的代码不匹配整个字符串,而是遍历每个字符 我这样试过: val_dict= {'1/2 pint': 'half', '1': 'one', '5': 'five'} text = 'I need 1/2 pint of beer' for x in val_dict: if x in text: print(x, val_dict.get(x)) 但是我越来越 1/2 pint half 1 one 而不仅仅
val_dict= {'1/2 pint': 'half', '1': 'one', '5': 'five'}
text = 'I need 1/2 pint of beer'
for x in val_dict:
if x in text:
print(x, val_dict.get(x))
但是我越来越
1/2 pint half
1 one
而不仅仅是“一半”。如何解决据我所知,这不是一个逃避角色
编辑:
考虑到其他主题中提供的解决方案,我尝试了正则表达式:
for x in val_dict:
if re.search(rf"\b{x}\b", text, re.IGNORECASE):
print(x + " match")
>>> 1/2 pint match
>>> 1 match
这是正常的,因为\b
但是:
for x in val_dict:
if re.search(rf"^{x}$", text, re.IGNORECASE):
print(x + " match")
应匹配精确的发生率,但不给出结果。为什么?
请注意,我的dict键可能包含空格,因此按空格分割文本将不起作用。这是修复方法:
val_dict= {'1/2': 'half', '1': 'one', '5': 'five'}
text = 'I need 1/2 pint of beer'
for x in val_dict:
if x in text.split(' '):
print(x, val_dict.get(x))
输出
1/2 half
您可以尝试使用正则表达式
import re
val_dict= {r'1/2': 'half', r'1[!/]': 'one', '5': 'five'}
# ^"1/2"^ ^ 1 with NO SLASH
text = 'I need 1/2 pint of beer'
for x in val_dict:
if re.match(x, text):
print(x, val_dict.get(x))
预期产出:
1/2 half
您可以定制RegEx以更好地满足您的需求 1/2在文本中,1也在文本中。但它们的键后是否有空格?“1/2点”会出现吗?这能回答你的问题吗@ChristianSloper这可能也会发生,但现在主要的问题是你们之间的空间,你们可能应该告诉我们你们试图做什么背后的更大的想法。您的代码确实找到了精确的匹配项并正常工作,您的问题在别处。不幸的是,这将无法工作,因为我的dict键可能包含空格well@jabba请参阅我提供的上述链接。您的问题已在此网站上得到解答。要么将其标记为重复项,要么将其删除…只匹配字符串开头的匹配项,您可能是指搜索