如何导入re和格式化代码



我正在尝试导入re,并在我的原始代码中有一个牌照格式,但我有代码,但不知道该放在哪里。我希望这在我的代码中是清楚的。

import re
    number_plate = re.match('d{2}[A-Z]{2}d{3}','12MNB36'):

上面的代码是我试图输入到下面显示的实际代码中的内容。

over_limit = []
file=open("newfile.txt", "w")
while True:
    speed = float()
    distance = 10
    time =float(raw_input('enter time'))
    speed = distance/time
    number_plate = raw_input('enter number plate')
    print speed

if speed>31.2928:
    #70 mph converted into m/s
    over_limit.append(number_plate)
    print over_limit
    file.write(number_plate)

else:
    print 'ok'
file.close()

下面是我如何写下你想要做的事情:

import re
PLATE_PATTERN = r'd{2}[A-Z]{2}d{3}'
with open("newfile.txt", "w") as f:
    over_limit = []
    while True:
        distance = 10
        print
        time  = raw_input('Enter time: ')
        if time.lower() == 'x':
            print("Goodbye.")
            break
        speed = distance / float(time)
        print("Speed: %s" % speed)
        if speed>31.2928:
            #70 mph converted into m/s
            print('Over Limit!')
            while True:
                number_plate = raw_input('Enter number plate: ')
                if re.match(PLATE_PATTERN, number_plate):
                    over_limit.append(number_plate)
                    f.write(number_plate)
                    print("Plate Recorded.")
                    break
                else:
                    print("error: '%s' didn't match regex '%s'" % (number_plate, PLATE_PATTERN))
        else:
            print('Speed OK')

行动中:

输入时间:1速度:10.0速度正常输入时间:.2速度:50.0超限!输入车牌:ABC123错误:"ABC123"与正则表达式"\d{2}[A-Z]{2{\d 3}"不匹配输入车牌号:12AB345板记录。输入时间:x再见

有很多更改,比如使用with块作为文件句柄和输出格式,但大多数更改都归结为程序流。

除了if/else语句外,该代码还使用了有意的无限循环while True,当满足特定条件时,这些循环将"断开"(与break一起)。这与其他语言中的do/while结构类似。

这个想法是用户输入一个时间,只有当你计算出的速度超过速度限制时,你才会关心这个时间。

如果没有,你只需要问另一个时间。

确实如此,只有这样你才关心车牌号。当你问它的时候也是如此。你强迫用户输入一个有效的车牌——无效的车牌(正则表达式匹配失败的车牌)会显示一个错误,程序会指示用户重试。

一旦用户输入了匹配的车牌号,它就会被附加到over_limit列表中(顺便说一句,你什么都不做)并写入文件中。请注意,该文件是以'w'模式而不是a模式打开的,因此每次运行程序时,输出文件都会被"清空"。

为了优雅地退出,当你被要求一段时间时,你可以键入"x",程序会说"再见"并终止。

请注意,从我开始写作以来的评论来看,您似乎需要更新PLATE_PATTERN表达式。

最新更新