python - .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']
任何帮助,将不胜感激!
解决方案
\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']
正则表达式分解
(?<!\/|:)
- Negative Lookbehind 以确保/
前面没有另一个斜杠或:
\/
- 匹配任何/
推荐阅读
- java - java创建一个返回哈希集的函数
- c++ - RC4 未生成正确的加扰状态数组
- c++ - 如何使用数组查找标准偏差
- javascript - 如何在提交时将输入日期格式从 MM dd yy 更改/转换为 yyyy-mm-dd
- javascript - 三.js改变每个粒子的轴心点
- wpf - 在 Core 3 客户端中找不到 WithUrl()
- scala - 在 Spark scala 中读取简单 JSON 文件时将所有记录设为 NULL
- python - 如何让python只读取文本文件的内容一次
- android - 如何使用 onPause(后退按钮)发送结果 Intent
- matplotlib - 情节未出现在 Jupyter