【问题标题】:How to extract sub string by defining before and after delimiter如何通过定义分隔符前后来提取子字符串
【发布时间】:2020-08-04 13:33:14
【问题描述】:

我有一个包含 URL 的数据框,我想从中提取一些东西。

df
    URL
    https://storage.com/vision/Glass2020/2020-02-04_B8I8FZHl-xJ_2236301468348443721.jpg
    https://storage.com/vision/Carpet5020/2020-02-04_B8I8FZHl-xJ_2236301468348443721.jpg
    https://storage.com/vision/Metal8020/2020-02-04_B8I8FZHl-xJ_2236301468348443721.jpg

想要的输出是这样的

            URL                                                                           Type
 https://storage.com/vision/Glass2020/2020-02-04_B8I8FZHl-xJ_2236301468348443721.jpg      Glass2020
 https://storage.com/vision/Carpet5020/2020-02-04_B8I8FZHl-xJ_2236301468348443721.jpg     Carpet5020
 https://storage.com/vision/Metal8020/2020-02-04_B8I8FZHl-xJ_2236301468348443721.jpg      Metal8020

我会使用df['URL'].str.extract,但要了解如何在分隔符之前和之后定义。

【问题讨论】:

    标签: python pandas python-re


    【解决方案1】:

    一个想法是使用Series.str.split 通过索引选择倒数第二个值:

    df['Type'] = df['URL'].str.split('/').str[-2]
    print (df)
                                                     URL        Type
    0  https://storage.com/vision/Glass2020/2020-02-0...   Glass2020
    1  https://storage.com/vision/Carpet5020/2020-02-...  Carpet5020
    2  https://storage.com/vision/Metal8020/2020-02-0...   Metal8020
    

    编辑:要指定预期输出之外的不同值,请使用Series.str.extract

    df['Type'] = df['URL'].str.extract('vision/(.+)/2020')
    print (df)
                                                     URL        Type
    0  https://storage.com/vision/Glass2020/2020-02-0...   Glass2020
    1  https://storage.com/vision/Carpet5020/2020-02-...  Carpet5020
    2  https://storage.com/vision/Metal8020/2020-02-0...   Metal8020
    

    【讨论】:

    • 不错。但这是基于立场的。前后有什么要定义的吗? After: vision/ and Before should be: /2020
    【解决方案2】:

    试试str.split:

    df['Type'] = df.URL.str.split('/').str[-2]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      • 2013-03-03
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      相关资源
      最近更新 更多