Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何导入re和格式化代码_Python_Import - Fatal编程技术网

Python 如何导入re和格式化代码

Python 如何导入re和格式化代码,python,import,Python,Import,我正在尝试导入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 =

我正在尝试导入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')
在行动中:

Enter time: 1 Speed: 10.0 Speed OK Enter time: .2 Speed: 50.0 Over Limit! Enter number plate: ABC123 error: 'ABC123' didn't match regex '\d{2}[A-Z]{2}\d{3}' Enter number plate: 12AB345 Plate Recorded. Enter time: x Goodbye. 有很多变化,比如使用with块作为文件句柄和输出格式,但大多数变化都归结为程序流

除了if/else语句外,该代码还使用了有意的无限循环,而True则在满足某个条件时使用break将其中断。这类似于其他语言中的do/while构造

这个想法是用户输入一个时间,你只关心从它计算的速度是否超过了速度限制

如果没有,你就改天再问

是的,只有到那时你才在乎车牌号。所以当你问它的时候。您强制用户输入有效的车牌-未通过正则表达式匹配的无效车牌将显示错误,程序将指示用户重试

一旦用户输入了一个匹配的车牌号,它就会被附加到超限列表中,您不需要对其进行任何处理,顺便说一句,并写入文件中。请注意,文件是以“w”模式而不是以“a”模式打开的,因此每次运行程序时,输出文件都将清空

要优雅地退出,当有人问你时间时,你可以键入“x”,程序说再见并终止


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

您的正则表达式中的字母和数字数量错误。它应该是2个数字,3个字母,2个数字。number_plate=re.search'\d{2}[A-Z]{3}\d{2}','12MNB36'我的任务是按照上面所示的格式,以2个字母、2个数字、3个字母进行搜索。然后您提供了一个糟糕的车牌示例,因为它与您的正则表达式不匹配。