我刚刚开始学习 python,出现了几个关于“最小化”代码的问题。例如,re.findall() 函数返回一个找到的字符串列表,但我总是需要一个,为了“安全”地得到它,我必须在分配之前检查列表的长度:
re_email = re.findall('pattern',string)
if len(re_email):
#получаю первый элемент который мне и нужен
email = re_email[0]
或者,在使用 bs4 函数时,不要立即应用下面的 get_text() 函数,因为可能找不到对象并且会引发异常。想要这样:
name = html.find(iprop="usrname").get_text()
它是这样的:
item_name = html.find(iprop="usrname")
name = ''
if item_name:
name = item_name.get_text()
是否有可能以某种方式缩短这些结构的编写时间?
在这两种情况下,三元运算符都会有所帮助:
和
当然,
None您可以替换为您自己的安全值版本。空集合在 Python 中是虚假的,因此
or如果接收到空列表而不是具有一个元素的列表,您可以使用运算符设置默认值:re_email这对结果来说是个坏名声re.findall()。如果您期待一个电子邮件列表,那么emails这是一个更好的名称。如果您只需要一个值,那么您可以
re.search()使用它而不是re.findall()尝试查找所有(额外)值的函数: