【问题标题】:.str.split() is removing the last character.str.split() 正在删除最后一个字符
【发布时间】:2023-04-05 18:21:01
【问题描述】:
def clean_hrefs(allHrefs): 
    links = {'links' : allHrefs}
    df = pd.DataFrame(links).drop_duplicates()
    df = df[df['links'].str.contains('financial|investors|investor|Investors|Investor|INVESTORS|INVESTOR|relations|relation|Relations|Relation|report|filings|news|media')]
    df['segment'] = df['links'].str.split(r'\w/')
    return df

clean_hrefs() 函数接受一个漂亮的汤结果集“allHrefs”,其中包含网页的所有href 值,并将其分配到字典链接中。 df 数据框只存储唯一的链接以及其中包含某些关键字的链接。

在那之后,我尝试拆分到目前为止得到的链接,例如: 例如,存储在数据框中的第一个链接是:

https://www.example.com/news-and-media/press-releases?page=/en/pressreleases/example-performs-first-crash-test-of-an-e-scooter-airbag- 1769461

代码:

df['segment'] = df['links'].str.split(r'\w/')

正在创建另一个名为segments的列并提供以下输出:

['https://www.example.co', 'news-and-medi', 'press-releases?page=/e', 'pressrelease', 'example-performs-first-crash-test-of-an-e-scooter-airbag-1769461']

我希望输出在哪里:

['https://www.example.com', 'news-and-media', 'press-releases?page=','en', 'pressreleases', 'example-performs-first-crash-test-of-an-e-scooter-airbag-1769461']

任何帮助将不胜感激!

【问题讨论】:

    标签: python regex pandas dataframe split


    【解决方案1】:

    \w matches any word character (equal to [a-zA-Z0-9_])

    因此,您将url 拆分为[a-zA-Z0-9_]/,在您的示例中通常包括斜杠前面的字符。

    假设您不想在https:// 上拆分,您可以使用

    re.split(r'(?<!\/|:)\/', string)
    #['https://www.example.com', 'news-and-media', 'press-releases?page=', 'en', 'pressreleases', 'example-performs-first-crash-test-of-an-e-scooter-airbag-1769461']
    

    正则表达式分解

    1. (?&lt;!\/|:) - 负向查找以确保 / 前面没有另一个斜杠或 :
    2. \/ - 匹配任何/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      相关资源
      最近更新 更多