使用python中url的每一行的域名创建一列

pw136qt2  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(297)

我从python开始,在创建从url列获取域名的新列时遇到了问题。
谁能给我解释一下怎么做?

import pandas as pd

concu = pd.read_csv(r'/Desktop/Concu.csv')

df = pd.DataFrame(concu, columns= ['URL'])

# df3['Domain'] = #GET THE DOMAIN NAME (NO HTTP/HTTPS/WWW. AND without everything

after .com, .io...)

print(df)

                                                   URL
0     https://smartkeyword.io/seo-outils-google-util...
1     https://smartkeyword.io/referencement-naturel-...
2     https://smartkeyword.io/seo-on-page-urls-optim...
3     https://smartkeyword.io/seo-outils-google-util...
4     https://smartkeyword.io/seo-outils-google-cach...
...                                                 ...
6758           https://www.primelis.com/consultant-seo/
6759       https://www.primelis.com/expertises/seo/aso/
6760  https://www.primelis.com/labo/consideration-li...
6761  https://www.primelis.com/faq/fonctionnement-re...
6762  https://www.primelis.com/blog/comment-est-ne-l...

[6763 rows x 1 columns]

非常感谢你!

ego6inou

ego6inou1#

你可以试着从中提取任何东西 /// 具有 www. 作为可选,并选择第二组。

>>> df['URL'].str.extract('//(www\.){0,1}(.*?)/')[1]

0       smartkeyword.io
1       smartkeyword.io
2       smartkeyword.io
3       smartkeyword.io
4       smartkeyword.io
6758       primelis.com
6759       primelis.com
6760       primelis.com
6761       primelis.com
6762       primelis.com
Name: 1, dtype: object

如评论中所问,如果您不想使用组捕获,您可以查找零或精确的组捕获 www. 使用 (?...)? 并提取域。

>>> df['URL'].str.extract('//(?:www\.)?(.*?)/')

                    0
0     smartkeyword.io
1     smartkeyword.io
2     smartkeyword.io
3     smartkeyword.io
4     smartkeyword.io
6758     primelis.com
6759     primelis.com
6760     primelis.com
6761     primelis.com
6762     primelis.com

注: ?: 指示子模式是非捕获子模式。这意味着任何匹配的 (?:www\.) ,即使它是由 () 它不会出现在匹配项列表中,仅 (.*?) 威尔。

相关问题