仅从 pandas 列的超链接中提取标题
Extract only title from hyperlink in pandas column
我有包含超链接的 pandas 列,我只想提取域名,不包括“.com”、“http//”、“www.”
下面的代码适用于我的大多数情况,但有一个代码没有 return 所需的字符串:
docs['link_title'] = docs['hyperlink'].str.extract(r'(?<=\.)(.*?)(?=\.)')
以下是超链接和结果的示例:
http://www.traveldailymedia.com/240881/qantas-launches-uk-agent-incentive/
-> “traveldailymedia”
https://www.instagram.com/p/BKDJcO-htRs/ -> “instagram”
但这是一个我没有得到域名的例子:
http://dtinews.vn/en/news/018/46981/vietnam-to-buy-40-airbus-planes.html
-> “vn/en/news/018/46981/vietnam-to-buy-40-airbus-planes”
因为没有前导点 ("."),所以不会得到名称 "dtinews"。
我将不胜感激这里的正则表达式或我的方法的一些替代方法。
您可以使用 tldextract
:
import tldextract
import pandas as pd
docs = pd.DataFrame({'hyperlink':["http://www.traveldailymedia.com/240881/qantas-launches-uk-agent-incentive/","https://www.instagram.com/p/BKDJcO-htRs/","http://dtinews.vn/en/news/018/46981/vietnam-to-buy-40-airbus-planes.html"]})
docs['link_title'] = docs['hyperlink'].apply(lambda x: tldextract.extract(x).domain)
输出:
>>> docs['link_title']
0 traveldailymedia
1 instagram
2 dtinews
我有包含超链接的 pandas 列,我只想提取域名,不包括“.com”、“http//”、“www.”
下面的代码适用于我的大多数情况,但有一个代码没有 return 所需的字符串:
docs['link_title'] = docs['hyperlink'].str.extract(r'(?<=\.)(.*?)(?=\.)')
以下是超链接和结果的示例:
http://www.traveldailymedia.com/240881/qantas-launches-uk-agent-incentive/
-> “traveldailymedia”
https://www.instagram.com/p/BKDJcO-htRs/ -> “instagram”
但这是一个我没有得到域名的例子:
http://dtinews.vn/en/news/018/46981/vietnam-to-buy-40-airbus-planes.html
-> “vn/en/news/018/46981/vietnam-to-buy-40-airbus-planes”
因为没有前导点 ("."),所以不会得到名称 "dtinews"。
我将不胜感激这里的正则表达式或我的方法的一些替代方法。
您可以使用 tldextract
:
import tldextract
import pandas as pd
docs = pd.DataFrame({'hyperlink':["http://www.traveldailymedia.com/240881/qantas-launches-uk-agent-incentive/","https://www.instagram.com/p/BKDJcO-htRs/","http://dtinews.vn/en/news/018/46981/vietnam-to-buy-40-airbus-planes.html"]})
docs['link_title'] = docs['hyperlink'].apply(lambda x: tldextract.extract(x).domain)
输出:
>>> docs['link_title']
0 traveldailymedia
1 instagram
2 dtinews