Python正则表达式与模式不匹配

时间:2016-09-30 08:24:38

标签: python regex

我尝试编写一个块,该块将从用户获取文件路径,并检查文件路径是否为a)实际上是打开文件的合法文件路径,以及b)第一行和最后一行of .txt文件适合这种模式:

-53.750 120.900 49.805

就像现在一样,我使用的代码不是模式匹配,而是接受任何文件。有谁知道代码的哪一部分需要调整才能获得所需的过滤器?我觉得我错过了一些明显的东西。

这就是我正在尝试的:

while True:
    try:
        fileInput = input("What is the file path?: ")
        openedInput = open(fileInput, 'r')
        inputList = []
        for line in openedInput:
            inputList.append(line)
        firstLine = inputList[0]
        lastLine = inputList[-1]
        print(firstLine)
        print(lastLine)

        if not re.match('.[0-9]+.[0-9]+\s.[0-9]+.[0-9]+\s[0-9]+.[0-9]+',firstLine) and re.match('.[0-9]+.[0-9]+\s.[0-9]+.[0-9]+\s[0-9]+.[0-9]+',lastLine):
            print("The data file must be in XYZ format, please submit a usable file: ")
            continue
        break
    except:
        print("That file path was not valid, try again")

2 个答案:

答案 0 :(得分:1)

你有否定的问题。您的代码当前正在执行的操作是仅在第一行不匹配且最后一行匹配时才打印错误消息。

它适用于if not (re.match(regex,firstLine) and re.match(regex,lastLine)):if not re.match(regex,firstLine) or not re.match(regex,lastLine):

答案 1 :(得分:-1)

您需要在正则表达式中的之前添加 \ 。 像这样:[0-9] + \。 [0-9]

希望它有所帮助,干杯。