69082


複数個あるurlの一部のみ（40：50の文字列）を抽出したく、

[code]

    url[0][40:50]
    
[/code]

のように書いていて、１番目の要素のみをループで増やしていきたいのですが、上手くいきません。  
やりたい事としては、

[code]

    url[0][40:50]
    url[1][40:50]
    url[2][40:50]
    
[/code]

のような形です。  
よろしくお願いします。


CC BY-SA 4.0
2020-07-28T12:50:26.563
69067
2020-07-29T03:01:47.160
2020-07-28T13:12:05.283
3060
41287
question
python python3
配列のn番目の要素のみを増やしたい


別サイトの質問文のコードではmonorate_urlsという配列に複数のURLが入っています。  
別サイトではfor文を使ってそれぞれのURLを取り出す処理はできているようなので、具体的に困っている内容は  
「for文を使ってみたけど下記のうまくいかないコードだとmonorate_urlsの配列からURLの文字列を順番に取り出せない」ことであると予想しています。

うまくいかないコード:

[code]

    monorate_urls=['https://AAA.link/publish/data/1500/2020-06-24.zip?token=ppp',
                   'https://FFF.link/publish/data/1500/2020-06-25.zip?token=bbb',
                   'https://XXX.link/publish/data/1500/2020-06-26.zip?token=sss']
    
    for url in monorate_urls:
        print(monorate_urls[0][30:45]) # 全部1個目の日付('2020-06-24')になる
        print(url[0][30:45])           # 全部空の値が戻ってくる
    
[/code]

for文で配列から個々のURL文字列が取り出せていますので、url[0][30:45]ではなくurl[30:45]のように書き換えると目的の文字列が取り出せます。  
URLの文字数は可変な場合もありますので、下記のサンプルコードを参考にして該当箇所の部分文字列を取得できることを確認してみてください。

サンプルコード:

[code]

    import re
    import os
    from urllib.parse import urlparse
    
    monorate_urls=['https://AAA.link/publish/data/1500/2020-06-24.zip?token=ppp',
                   'https://FFF.link/publish/data/1500/2020-06-25.zip?token=bbb',
                   'https://XXX.link/publish/data/1500/2020-06-26.zip?token=sss']
    
    for url in monorate_urls:
        # 指定文字数で部分文字列を取得
        title = url[30:45]
    
        # 正規表現で一致する文字列を取得
        title = re.search('/([\d-]+)\.zip', url)[1]
    
        # urllibとos.pathで拡張子のないファイル名を取得(オススメ)
        filename = os.path.basename(urlparse(url).path)
        title = os.path.splitext(filename)[0]
    
        dst_dir ='/content/drive/My Drive/exsample/data/{}'.format(title)
        print(dst_dir)
    
[/code]


CC BY-SA 4.0
2020-07-29T03:01:47.160
69082
2020-07-29T03:01:47.160
9820
69067
answer