我正在使用文件上传查询将CSV文件的内容插入到mysql中。
CREATE table my_table( id int primary key, name varchar(50), mobile int(12), );
我的CSV文件内容如下:
1,"John",919898878878,"john@some.com"
2,"Grey",957738378373,"gre@some.com",
3,"Daniel",918786545656,"daniel@some.com"
我想检查是否在插入之前为字段提供了正确的数据,例如,如果是电子邮件,则应采用[a-zA-Z0-9] @ [某些域]的格式如果是手机号码所有字母应为整数。
答案 0 :(得分:1)
import csv
import re
with open('m.csv', 'r') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',', quotechar='"')
for row in spamreader:
uid = row[0]
name = row[1]
mobile = row[2]
email = row[3]
if not re.match('^\d{12}$', mobile):
print("Mobile not match")
continue
if not re.match('^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$', email):
print("Email not match")
continue
"""
Store into database
"""
也许尝试这样的事情。我只是根据您当前的信息创建了一个正则表达式,但是手机号码可以不同(现在是12位数字),电子邮件有时也可以不同。
答案 1 :(得分:0)
您可以使用javax.validation.constraints.Pattern
。
第一个字段是要验证的正则表达式,第二个字段是在验证失败时应显示的错误消息。
对于电子邮件,您可以指定如下。
@Pattern(regexp="^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$",
message="{invalid.email}")
protected String email;
您可以根据需要更改上述正则表达式。 在这里https://docs.oracle.com/cd/E19798-01/821-1841/gkahq/index.html
了解更多信息