Python程序检查字符串中的URL
本文将教您如何确定字符串是否包含URL。在Python中,字符串是表示Unicode字符的字节集合。您可以使用单引号或双引号,它们括起来的所有内容都被视为字符串。给定一个字符串,我们将首先确定它是否包含URL。如果找到了URL,我们将打印出来。
使用findall()方法
我们将使用Python的正则表达式概念来解决这个问题。正则表达式由Python re包支持。正则表达式是一系列特殊字符序列,通过定义在模式中的特定语法,有助于匹配或查找其他字符串或字符串集合。
findall()方法返回列表中的每个字符串都表示找到的不同匹配项。此方法从左到右扫描字符串,以匹配项找到的顺序返回匹配项。
算法
下面的算法演示了如何使用findall()方法检查字符串中是否有URL −
- re模块导入
-
创建一个查找URL的函数。
-
在函数中创建一个正则表达式,其中存储了可以存在于URL中的每个字符。
-
声明第二个变量,用于存储符合URL模式的每个字符串。
-
一次性打印列表中的所有字符串。
-
声明一个带字符的字符串。
-
将字符串作为参数传递到函数中后,打印函数返回的值。
示例
在此程序中,我们使用了re模块的一个函数,该函数将搜索指定模式的提供字符串。为了使用该函数,我们必须在程序中导入re模块。如果该字符串不包含任何URL,则程序将显示一个空列表。
import re
def checkURL(str):
# findall()函数与定义的可以存在于字符串中的条件一起使用,可以用于在字符串中查找URL
# regex函数可以存储所有字符,包括字母数字、特殊符号和字符等8. Python程序检查字符串中的URL
regex='http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\), ]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
URL=re.findall(regex,str)
return URL
# 主程序
m="https://www.tutorialspoint.com/python-program-to-check-for-url-in-a-string"
print("URL是:",checkURL(m))
输出
以下是上述代码的输出 −
URL是:['https://www.tutorialspoint.com/python-program-to-check-for-url-in-a-string']
示例
在下面的Python代码中,我们创建了一个用于URL的正则表达式,以验证输入字符串中的URL,并使用内置方法findall()检查输入字符串中的URL模式。结果在从左到右扫描字符串后返回 −
import re
def checkURL(str):
# findall()函数与定义的可以存在于字符串中的条件一起使用,可以用于在字符串中查找URL
regex='http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\), ]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
checkURL=re.findall(regex,str)
if checkURL:
return "字符串中的URL是:",checkURL
else:
return "未发现URL"
# 主程序
m=input("提供字符串:")
print(checkURL(m))
输出
以下是两种输出情况 −
情况1
当url模式未正确提供时,上述代码的输出如下所示 −
提供字符串:Providing this like url
URL是:未发现URL
情况2
以下是正确提供URL时的输出-
提供字符串:https://www.tutorialspoint.com/python-program-to-check-for-url-in-a-string
('url in the string is:', ['https://www.tutorialspoint.com/python-program-to-check-for-url-in-a-string'])
使用search()方法
在Python中,正则表达式搜索通常表示为:match = re.search (path, string)。re.search()方法使用正则表达式模式和字符串在字符串中查找正则表达式模式。如果搜索成功,则返回匹配对象或没有。
例子
以下代码使用re模块的search()方法,将所需的结果作为URL返回-
import re
#找到在字符串中与网址格式相匹配的条件
string = "https://www.tutorialspoint.com/python-program-to-check-for-url-in-a-string"
regex= 'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\), ]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
result = re.search(regex,string).group()
print("URL是:", result)
输出
以下是上述代码的输出-
URL是: https://www.tutorialspoint.com/python-program-to-check-for-url-in-a-string