Python 检查输入变量是否匹配格式

Python check if input variable matches format

我正在尝试创建一个 'check' 以查看给定的 link 是否与特定模式匹配。这是我目前所拥有的:

love = input("Enter URL: ")
while True:
    if love == 'https://www.youtube.com/watch?v=*':
        print("confirm, what is love?")
        break
    else:
        print("NOT A YOUTUBE LINK")

love 应该是 youtube link,从 https://www.youtube.com/watch?v= 开始到 11 个通配符结束。如何做到这一点?

使用startswith()方法。

if love.startswith('https://www.youtube.com/watch?v='):

对于这样的 if 语句,您不需要 while 循环。如果你这样写,你的程序将不断打印出“NOT A YOUTUBE LINK”,因为你没有 break for else .如果您在 else 语句中放入 break,那么 while 循环 就没有用了,因为无论如何你都会在一次尝试后停止程序。另外,使用 startswith() 检查 URL

如果要使用循环,可以这样使用:

def checkURL(inputURL):
    if inputURL.startswith('https://www.youtube.com/watch?v='):
        print("confirm, what is love?")
    else:
        print("NOT A YOUTUBE LINK")

while True:
    love = input("Enter URL: ")
    if love.lower() != "quit":
        checkURL(love)
    else:
        break

如果在 = 后正好需要 11 个字符,您可以使用正则表达式:

import re

love = input("Enter URL: ")

if re.search(r"http://youtube.com/watch\?v=.{11}", love):
    print("Valid")
else:
    print("Invalid")

正则表达式中的.{11}表示匹配任何字符(.)恰好11次({11}).

我发现您的代码存在一些问题:

  1. 你不需要 while 循环,只要它不是 youtube,它就会结束你的计算机内存 link
  2. 你可以只检查字符串变量中是否有youtube.com
  3. youtube 域可以是 **youtube.com`、youtu.be,也许还有一些我不知道的。我建议将它们全部放在一个列表中并检查。