我正在尝试建立一个自动删除邮件的机器人,如果邮件中包含来自正文列表中的特定字符串。
此代码完全按照我的想法工作:(返回True)
s = 'test upvote test'
upvote_strings = ['upvote', 'up vote', 'doot']
print(any(x in s for x in upvote_strings))
但这不是:(返回False)
s = 'your upvotе bot thing works fine lmao'
upvote_strings = ['upvote', 'up vote', 'doot']
print(any(x in s for x in upvote_strings))
答案 0 :(得分:7)
其中一个e不是ASCII:
>>> import unicodedata
>>> unicodedata.name(s[10])
'CYRILLIC SMALL LETTER IE'
>>> unicodedata.name(upvote_strings[0][-1])
'LATIN SMALL LETTER E'
unidecode
可以帮助您
>>> e1 = s[10]
>>> e2 = upvote_strings[0][-1]
>>> e1 == e2
False
>>> from unidecode import unidecode
>>> unidecode(e1) == "e" == unidecode(e2)
True