看,我已经看到本网站提供的许多答案涉及我的问题的各个方面。 [上述]答案通常提供已经存在的例子,这些例子过于基本无济于事 - 至少对我而言。但是,嘿,也许我过于复杂了。
这是原始的长线:
for i in range(2, l + 1):
job_count_array["//form[@id='SubAvailSelectForm']/font/table[2]/tbody/tr[%d]/td[1]/small" % i] = sel.get_text("//form[@id='SubAvailSelectForm']/font/table[2]/tbody/tr[%d]/td[1]/small" % i)
这是我尝试实施'长线延续'礼仪(2007年发现的pycon讲义,我发现here):
for i in range(2, l + 1):
job_count_array["//form[@id='SubAvailSelectForm']/font/table[2]/ \
tbody/tr[%d]/td[1]/small" % i] = sel.get_text("/ \
/form[@id='SubAvailSelectForm']/font/table[2]/tb \
ody/tr[%d]/td[1]/small" % i)
我的尝试(a)是否会被解析器正确解释和/或(b)被任何有用的贡献者更加“漂亮”或高效?谢谢。
答案 0 :(得分:4)
我会选择以下两种选择之一:
for i in range(2, l + 1):
replace_index = "//form[@id='SubAvailSelectForm']/font/table[2]/tbody/tr[%d]/td[1]/small" % (i,)
job_count_array[replace_index] = sel.get_text(replace_index)
首先,您使用两次相同的长字符串,因此请在其位置使用replace_index
。这使得代码更短,并且保证您不会在两者之间有任何小的,难以识别的拼写错误。
for i in range(2, l + 1):
replace_index = ("//form[@id='SubAvailSelectForm']/"
"font/table[2]/tbody/tr[%d]/td[1]/small") % (i,)
job_count_array[replace_index] = sel.get_text(replace_index)
其次,您可以使用“括号内的字符串自动连接”技巧,而不是字符串转义的行尾。我觉得这样阅读起来容易得多。
另外值得注意的是使用(%i,)
代替%i
进行字符串格式化。事实证明,在我的过去,将单个字符串格式化参数设置为元组是有益的,因此将来更容易添加其他参数,而且在如何呈现字符串格式化参数方面也很好。