使用列表检查字符串是否包含某个字母或数字

2024-09-21 05:31:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我要回答的问题需要你验证汽车牌照。它必须查找由两个字母、三个数字、三个字母组成的序列,否则将返回一个类似“无效邮政编码”的消息

我需要知道如何通过与列表比较来检查字符串是否包含某个字母或数字。在

到目前为止,我得到的是:

# Task 2

import random
import re

def regNumber():
    # Generate a Car Reg Number
    letters = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
    numbers = ["1","2","3","4","5","6","7","8","9","0"]

    letter1 = random.choice(letters)
    letter2 = random.choice(letters)
    number1 = random.choice(numbers)
    number2 = random.choice(numbers)
    letter3 = random.choice(letters)
    letter4 = random.choice(letters)
    letter5 = random.choice(letters)
    licensePlate = (letter1 + letter2 + number1 + number2 + letter3 + letter4 + letter5)
    return licensePlate, letters, numbers

carReg, letters, numbers = regNumber()

print(carReg)
if letters not in carReg: print("Success")

但是,我得到一个错误:

^{pr2}$

感谢任何帮助。在


Tags: import字母数字randomnumberschoicelettersletter3
3条回答

错误告诉了你这个案子的确切问题

letters是从regNumber返回的列表,但是in在左边需要一个字符串

就像'ASD111' in carReg

改变

if letters not in carReg: print("Success")

^{pr2}$

在你的代码中,你有一个字符串列表,这就是为什么我把你的if条件改为for循环,这样列表中的每个元素都会被检查是否出现在carReg string中。在

或者,我认为你应该用旗子来解决你的问题。是这样的:

flag = 0
for l in letters:
    if l in carReg: 
        flag = 1
        break

if flag == 0:
    print("Success")

您需要使用此方法检查字符串中的字符,它不会简单地为您遍历列表。

尝试使用类似这样的方法来检查字符串列表中的每个字符:

if any(letter in carReg for letter in letters):

这将在第一个True上删掉,我想这就是你要找的。

注意:如果像这样使用any对您来说是一个陌生的领域,您也可以总是遍历字符串列表中的每个字符串来检查这些给定的字符。在

更新:如果您试图匹配给定的字母和数字格式,那么熟悉Python的 regex 方法来与有效的车牌进行模式匹配比尝试使用循环来验证车牌更有意义(IMHO)。我不会为您的特定情况编写regex,但是为了给您一个想法,下面将允许您匹配3个字母后跟1-4个数字(有效的车牌,whereIlive)

^{pr2}$

如果你真的必须使用一个列表来检查,你将不得不使用一系列的条件语句将车牌分割成若干部分,在这些部分中你可以反复验证。在

相关问题 更多 >

    热门问题