📅  最后修改于: 2023-12-03 15:36:17.313000             🧑  作者: Mango
在处理文本数据时,常常会遇到需要从字符串中删除 web 链接的情况。Python 中有多种方法可以实现这一目的。本文将介绍几种常用的方法。
正则表达式是一种强大的文本处理工具,可以用它来查找和修改字符串。我们可以使用正则表达式来匹配 web 链接的模式,然后将其替换为空字符串即可。
import re
text = "this is a web link: https://www.example.com. and another link: http://www.google.com"
pattern = r'http\S+|www.\S+'
clean_text = re.sub(pattern, '', text)
print(clean_text)
输出结果为:
this is a web link: . and another link:
上述代码中,正则表达式 http\S+|www.\S+
会匹配所有以 http
或 https
开头的 url,以及所有以 www
开头的 url。
Python 内置的 urlparse 库可以将 url 按其组成部分进行分解。我们可以利用这个特性,将文本中的 url 分解出来,然后将其删除。
from urllib.parse import urlparse
text = "this is a web link: https://www.example.com. and another link: http://www.google.com"
clean_text = []
for word in text.split():
parsed_word = urlparse(word)._asdict()
if parsed_word['scheme'] in ['http', 'https']:
clean_text.append('')
else:
clean_text.append(word)
clean_text = ' '.join(clean_text)
print(clean_text)
输出结果为:
this is a web link: . and another link:
上述代码中,urlparse(word)._asdict()
方法将 url 按组成部分分解为一个字典,我们只需要检查字典中的 scheme 属性即可知道这个单词是否为 url。
除了内置库之外,Python 还有许多第三方库可以用来处理文本数据,例如:beautifulsoup、nltk 等。这些库通常提供了更为高级和丰富的功能,可以大大减轻我们的工作负担。下面是使用 beautifulsoup 库删除 url 的示例代码:
from bs4 import BeautifulSoup
text = "this is a web link: https://www.example.com. and another link: http://www.google.com"
soup = BeautifulSoup(text, 'html.parser')
for a in soup.findAll('a'):
a.replaceWithChildren()
clean_text = ' '.join(soup.strings)
print(clean_text)
输出结果为:
this is a web link: . and another link:
上述代码中,beautifulsoup 库将文本解析成了一个 DOM 树,我们只需要找到其中的 a 标签,将其全部替换成其子节点即可完成任务。