python - Python 使用的字符串比较 if 语句
问题描述
我了解(我读过“比较使用字典顺序”)“Python 使用的字符串比较技术”是如何工作的,但是if email.rfind('.') > email.find('@') + 1:
我无法弄清楚它是如何工作的以及为什么工作。点.
是 46,@
是 64。
print("a " + str(ord("a")))
print("b " + str(ord("b")))
print("c " + str(ord("c")))
print(". " + str(ord(".")))
print("@ " + str(ord("@")))
print('aab' < 'aac')
print()
def check_email(email):
if " " not in email and "@" in email:
if email.rfind('.') > email.find('@') + 1:
return True
return False
print(check_email("mailfff@x.uss"))
print(check_email("mailfff@xus.s"))
print(check_email("mailfff@xuss"))
输出:
a 97
b 98
c 99
. 46
@ 64
True
True
True
False
解决方案
因为rfind
返回字符串中字符的位置而不是 ascii 值ord
>>> email = "mailfff@x.uss"
>>> email.rfind('.')
9
>>> email.rfind('@')
7
所以if email.rfind('.') > email.rfind('@')
返回True
推荐阅读
- sql-server - SQL Server - 复制和修改一年的数据
- c# - 实体框架中的实体应该有一个填充列表,但它总是空的
- powershell - Powershell PSReadLine 历史
- python-3.x - 根据最多 4 个值过滤 python 中的字典列表的函数
- r - 在分组图中使用 ggpubr 绘制 p 值会导致错误
- python - 使用 RandomizedSearchCV 进行随机森林调优
- html - 绝对定位清除页脚
- javascript - 我的代码 javascript 函数 onchange() 有问题
- c# - 将一个简单的 json 对象转换为 (C#) 中的字典列表
- python - 在 python 3.x 中随机打印不同的值