我有一个包含电子邮件的CSV文件,我需要在其中验证是否有不止一列,如果有那么我需要拒绝该文件,我正在考虑阅读每一行并使用“输入”操作来检查如果第一行包含逗号,尽管在yahoo链接https://in.answers.yahoo.com/question/index?qid=20101211183849AAy3gVh中 我发现如果在双引号中,我们可以在电子邮件地址中添加逗号。
这里的逻辑应该是什么?
不能使用csv或pandas模块
文件的前3行:
dilkash.manghani@gmail.com, dilkash.manghani@gmail.com
dilkash123@gmail.com, dilkash123@gmail.com
dilkash423@gmail.com, dilkash523@gmail.com
代码:
with open("file.csv", "r") as f:
data = f.read().split('\n')
for email in data:
if "," in email:
raise Exception("invalid")
答案 0 :(得分:0)
使用熊猫,如下所示加载到数据框中
import pandas
df = pandas.read_csv(file_path)
if (len(df.columns) >2):
raise Exception
else:
print("Valid")
编辑:由于不能使用熊猫或csv,因此可以执行以下操作
with open(file) as f:
for each in f:
if len(f.split(',"')) > 2:
raise Exception
print("Valid CSV")
注意:我使用,"
作为分隔符。为什么?,因为,如果可以在列中包含逗号,那么它应该被双引号引起来。并且由于它是csv,因此每一列都必须用逗号分隔。因此,至少会有一个,"
答案 1 :(得分:-1)
>>> import csv
>>> with open('eggs.csv', 'rb') as csvfile:
... spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
... for row in spamreader:
... assert(len(row) == 1)
... print ', '.join(row)
会做。