for i in range(1,50):
path = if i < 10:
url + '0' + str(i)
else:
url + str(i)
df = pd.read_html(path)
在这种情况下,我得到了
SyntaxError: invalid syntax for 'if'.
如何修复此代码?
for i in range(1,50):
path = if i < 10:
url + '0' + str(i)
else:
url + str(i)
df = pd.read_html(path)
在这种情况下,我得到了
SyntaxError: invalid syntax for 'if'.
如何修复此代码?
保持简单明了,只需执行以下操作:
if i < 10:
path = url + '0' + str(i)
else:
path = url + str(i)
或者,使用 Python 的字符串格式化功能来创建您的字符串。如果您想要一个最小长度为 2 个字符的零填充字符串,您可以使用以下格式:
>>> a = 3
>>> f'{a:0>2}'
'03'
>>> a = 33
>>> f'{a:0>2}'
'33'
>>> a = 333
>>> f'{a:0>2}'
'333'
您实际上想要“重新格式化”路径,将i转换为零填充字符串。因此,最自然的方法是仅使用零填充格式,可在f_strings中访问。就像是:
for i in range(1,50):
path = url + f'{i:02}'
# Do with your path whatever you wish
如果要在赋值中使用 if 语句,可以执行以下操作:
path = url + '0' + str(i) if i < 10 else url + str(i)
因此您在循环中的代码将如下所示:
for i in range(1,50):
path = url + '0' + str(i) if i < 10 else url + str(i)
df = pd.read_html(path)
...
您的目标还有另一种方法。您需要将数字补零以使其成为 2 个字符,因此您可以使用zfill
str 类的方法。
for i in range(1,50):
padded_i = str(i).zfill(2)
path = '{url}{id}'.format(url=url, id=padded_i)
df = pd.read_html(path)
...
您也可以使用传统方式,但它不像以前的方式那么甜:
for i in range(1, 50):
if i < 10:
i = '0' + str(i)
else:
i = str(i)
path = url + i
df = pd.read_html(path)
...