regex 使用pandas str提取字符串中网站模式的第二个示例,contains

lrpiutwd  于 2023-04-22  发布在  其他
关注(0)|答案(3)|浏览(141)

我试图从下面的字符串中提取www网站的第二个示例。这是在一个pandas数据框中。

https://google.com/url?q=https://www.accenture.com/in-en/insights/software-platforms/core- 
banking-on- 
cloud&sa=U&ved=2ahUKEwiQ75fwvYD1AhXOYMAKHXofCeoQFnoECAgQAg&usg=AOvVaw02sP402HcesId4vbgOaspD

所以我想提取下面的字符串并将其存储在单独的列中。

https://www.accenture.com/in-en/insights/software- 
                              platforms/core- banking-on- 
   cloud&sa=U&ved=2ahUKEwiQ75fwvYD1AhXOYMAKHXofCeoQFnoECAgQAg&usg=AOvVaw02sP402HcesId4vbgOaspD

最终数据框:

sr.no    link_orig              link_extracted
  1       <the above string>    <the extracted string that starts from 
                                 https://www.accenture.com>

下面是代码片段:

df['link_extracted'] = `df['link_orig'].str.contains('www.accenture.com',regex=False,na-np.NaN)

我收到以下错误:

ValueError: Cannot mask with non-boolean array containing NA / NaN values

我在这里遗漏了什么?如果我必须使用正则表达式,那么应该采用什么方法?

oxosxuxt

oxosxuxt1#

这个错误消息意味着你可能在link_orig列中有NaN。这可以通过在代码中添加fillna('')来修复。
就像

df['link_extracted'] = df['link_orig'].fillna('').str.contains ...

也就是说,我不确定剩下的代码是否会按照你的要求执行,它只会返回True is www.accenture.com is link_orig字符串中的任何位置。
如果您尝试提取的链接始终包含www.accenture.com,则可以执行以下操作

df['link_extracted'] = df['link_orig'].fillna('').str.extract('(www\.accenture\.com.*)')
vaj7vani

vaj7vani2#

就我个人而言,我会使用Series.str.extract()。例如:

df['link_extracted'] = df['link_orig'].str.extract('http.*(http.*)')

这将匹配http,后跟任何内容,然后捕获http,后跟任何内容。
另一种方法是使用urlparse

r6vfmomb

r6vfmomb3#

可以使用urllib.parse模块:

import pandas as pd
from urllib.parse import urlparse, parse_qs

url = 'https://google.com/url?q=https://www.accenture.com/in-en/insights/software-platforms/core-banking-on-cloud&sa=U&ved=2ahUKEwiQ75fwvYD1AhXOYMAKHXofCeoQFnoECAgQAg&usg=AOvVaw02sP402HcesId4vbgOaspD'
df = pd.DataFrame({'sr.no':[1], 'link_orig':[url]})

extract_q = lambda url: parse_qs(urlparse(url).query)['q'][0]
df['link_extracted'] = df['link_orig'].apply(extract_q)

输出:

>>> df
   sr.no                                          link_orig                                     link_extracted
0      1  https://google.com/url?q=https://www.accenture...  https://www.accenture.com/in-en/insights/softw...

相关问题