我正在处理一些html解析,我很难定义一种方法来处理被提取的信息。你知道吗
例如,考虑这样一个页面http://www.the-numbers.com/movies/1999/FIGHT.php。我想处理每一个内容,比如The Numbers Rating
、Rotten Tomatoes
、Production Budget
、Theatrical Release
和其他内容,以便存储每个“键”可能假定的值。你知道吗
提取的过程对我来说已经解决了,我不确定的是如何正确地存储这些内容。正如我所说,它们就像“钥匙”一样工作,所以dictionary
是一个非常直接的答案。不过,我还是很想为我正在构建的类中的每个“键”添加一个成员。你知道吗
问题是,考虑到代码编写,在访问这些内容的过程中,哪种方法效果更好,如果这些方法是解决这个问题的最佳方法。你知道吗
对于第一种情况,我会说:
class Data:
def __init__(self):
self.data = dict()
def adding_data(self):
self.data["key1"] = (val1, val2)
self.data["key2"] = val3
self.data["key3"] = [val4, val5, val6, ...]
对于第二个:
class Data:
def adding_data(self):
self.key1 = (val1, val2)
self.key2 = val3
self.key3 = [val4, val5, val6, ...]
我之所以考虑这样做,是因为我正在使用BeautifulSoup
API,而且我非常熟悉它们处理结果“soup”上每个标记的方式。你知道吗
soup = BeautifulSoup(data)
soup.div
soup.h2
soup.b
你认为哪种方式更方便用户?有没有更好的办法?你知道吗
如果使用类属性(自动键1…)静态检查代码的工具(如pylint)将显示未使用和未定义的变量,因此错误类型。你知道吗
Pylint运行:
字典里的钥匙不是这样的。一个输入错误会消失,这就是为什么我更喜欢类属性。但是,如果你有一个字典,你可以很容易地遍历这组键。虽然你也可以得到一个类实例的属性列表,但是你会得到一些杂音。(参见默认定义的其他属性中的key1 lost)
因此,如果您不需要在已创建的“键”列表中迭代,我将使用class属性方式。你知道吗
如果你有固定数量的属性,也就是说,你事先知道键值,那么我认为更好的方法是把这些键中的每一个作为实例变量,就像你的第二个例子一样。你知道吗
另一方面,如果您不知道您将事先拥有哪些“键”,或者它们太多,那么您可以使用类似字典的容器类型。您可以动态地将数据添加到字典中,因此如果有许多数据,也会减轻负担。例如,您可以使用“For…”。。。在..“循环中添加数据。你知道吗
相关问题 更多 >
编程相关推荐