Python 正则表达式打印无效响应

Python 正则表达式打印无效响应,python,indentation,Python,Indentation,输出 # Reading CSV import csv with open('A453_datafile_4_Mat 4 Data File.csv', 'r') as f: reader = csv.reader(f) for row in reader: print (row) import re email=input("What is your email") password= input("What is your password") with

输出

# Reading CSV
import csv
with open('A453_datafile_4_Mat 4 Data File.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print (row)

import re
email=input("What is your email")
password= input("What is your password")

with open('A453_datafile_4_Mat 4 Data File.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row['email'])
        print(row['password'])

    pattern = (row['email'])    
    if re.match(pattern, email):
        print("Valid Email")
    else:
        print("Invalid Email")

    pattern= (row['password'])

    if re.match(pattern, password):
        print("Valid Password")
    else:
        print("Invalid Password")

当我输入包含在我打印出来的csv文件中的数据时,我会收到无效的电子邮件和无效的密码语句。但是,每当我输入最后一组数据时,它会显示数据无效。我不知道该怎么办,因为我还是python的初学者,我怀疑这与我定义2个模式有关。

看起来像是一个简单的缩进问题。 您需要缩进所有进行匹配和打印的行(从
pattern=(行['email'])
开始):


1) 你的缩进有问题。许多使用
的代码位于定义
变量的循环之外。我不确定在你的代码中是这样的,还是仅仅在问题中。2) 为什么要使用正则表达式?看起来您正在尝试进行平等性测试,而不是模式匹配。正则表达式对此毫无意义。如果我是对的,就测试字符串是否相等。3) 我相信你能找到缩短这个时间的方法。4) 这个问题在很大程度上是一个代码转储问题。您从来没有向python提供指定电子邮件格式的正则表达式。OP只是对
行['email']
执行简单的字符串匹配
email=input(“您的电子邮件是什么”)
。这甚至不需要正则表达式。
['email', 'password', 'firstname', 'secondname', 'street', 'city', 'pcode']
['', '', '', '', '', '', '']
['ojones@coldmail.net', 'ocrabc', 'Oliver', 'Jones', '53 Vale House', 'Portsmouth', 'P03 2TD']
['', '', '', '', '', '', '']
['asmith@ablealarms.net', 'alan123', 'Alan', 'Smith', '3 Porter Street', 'Cricklewood', 'HE3 4DH']
['', '', '', '', '', '', '']
['rakhter@bluebell.org', 'raj45', 'Raj', 'Akhter', '12 Middleport Road', 'Cheltenham', 'CH4 5GH']
['', '', '', '', '', '', '']
['hrdg4678@netwise.net', 'ha123', 'Jan', 'Pietersson', '56 Holde Street', 'Birmingham', 'B23 3RT']
['', '', '', '', '', '', '']
['miguel5@bluebell.net', 'happy3', 'Miguel', 'Santos', '45 Vine Avenue', 'Oxford', 'OX7 3RF']
What is your emailojones@coldmail.net
What is your passwordalan123


ojones@coldmail.net
ocrabc


asmith@ablealarms.net
alan123


rakhter@bluebell.org
raj45


hrdg4678@netwise.net
ha123


miguel5@bluebell.net
happy3

Invalid Email
Invalid Password
for row in reader:
    print(row['email'])
    print(row['password'])
    # BUG! only the above two statements get executed for every row
    # BUG: so the final value of email = row['email'] for the last row!

# BUG: so since the following lines are unindented, they only get executed once,
# which is not what you want!
pattern = (row['email']) ...  
if pattern == email: # or pattern.index(email) >= 0
# ...