首页 > 解决方案 > .str.split() 正在删除最后一个字符

问题描述

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']

任何帮助,将不胜感激!

标签: pythonregexpandasdataframesplit

解决方案


\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. (?<!\/|:)- Negative Lookbehind 以确保/前面没有另一个斜杠或:
  2. \/- 匹配任何/

推荐阅读