-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 に答える
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文字にする必要があるため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)
        ...
于 2020-05-10T08:40:12.100 に答える