gpt4 book ai didi

python - 在 python 中我应该使用 try 还是 If ,为什么?

转载 作者:行者123 更新时间:2023-12-01 04:34:56 25 4
gpt4 key购买 nike

首先,我知道 if 和 try 之间的区别,并且我完全意识到它们的目的完全不同 - 一个进行测试,另一个管理错误。但是,在这种特殊情况下,使用 if 或 try 更好吗?

#option1
def getListRank(self):
for point in self.soup.findAll('td',class_="rank-cell"):
p = (point.get_text().replace('\t','').replace('\n','')
.replace('\r','').replace(',',''))
if 'T' in p:
self.listRk.append(int(p.replace('T',''))
else:
self.listRk.append(int(p))
return self.listRk

鉴于我知道阻止将 p 转换为整数的唯一原因是“T”的存在,我很想使用以下选项2。因此,这样写会不会不寻常或效率较低:

#option2
def getListRank(self):
for point in self.soup.findAll('td',class_="rank-cell"):
p = (point.get_text().replace('\t','').replace('\n','')
.replace('\r','').replace(',',''))
try:
self.listRk.append(int(p))
except:
self.listRk.append(int(p.replace('T',''))
return self.listRk

我问这些问题是因为我之前读过这篇文章,所以我认为它是“pythonic”。然而,如果有一个解释/约定,我非常感兴趣。

提前致谢

最佳答案

两者都不要使用。按照 @tobias_k 的建议,删除 T 以及其他字符;那么您知道 int(p) 会成功。您也可以使用 re.sub 更轻松地完成此操作,将其简化为使用列表理解而不是 for 循环。

import re

to_replace = re.compile(r'\t|\n|\r|T|,')
def getListRank(self):
points = self.soup.findAll('td', class_="rank-cell")

self.listRk = [int(re.sub(to_replace, "", p.get_text())) for p in points]
return self.listRk

您还可以使用 str.translate 删除字符集。

self.listRk = [int(p.get_text().translate(None, "\r\n\tT,")) for p in points]

关于python - 在 python 中我应该使用 try 还是 If ,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31876705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com