-5
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'.

如何修复此代码?

4

3 回答 3

1

保持简单明了,只需执行以下操作:

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'
于 2020-05-10T08:41:43.030 回答
1

您实际上想要“重新格式化”路径,将i转换为零填充字符串。因此,最自然的方法是仅使用零填充格式,可在f_strings中访问。就像是:

for i in range(1,50):
    path = url + f'{i:02}'
    # Do with your path whatever you wish
于 2020-05-10T08:55:05.287 回答
0

如果要在赋值中使用 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 个字符,因此您可以使用zfillstr 类的方法。

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)
        ...
于 2020-05-10T08:40:12.100 回答