我有一个函数,它在我的django应用程序中上传了一个csv或txt文件,读取所有文件并将其处理成python列表。我注意到如果由于某种原因文件包含空行,它不会读到文件的末尾并返回一个空列表。你觉得我错过了什么吗?这是我的代码。
是的,我可以告诉用户确保该文件不包含任何空行,但我想我可以让脚本足够智能,在阅读时不会破坏直到文件结束。
def read_the_file_content(self,file,filetype,message,sender): print"在readfile"
中 data = []
for row in csv.reader(file):
print row
num = str(re.sub("[^0-9]","",row[0]))
#print num
if num.startswith('0'):
phone_num = '234' + num[1:]
else:
phone_num = num
data.append(phone_num)
if data == []:
return []
else:
return set(data)
07037062611 07063724920
08065537377 08168571687
答案 0 :(得分:1)
您可以通过查看返回列表
来跳过csv阅读器中的空行for row in csv.reader(file):
if not row:
continue
...
答案 1 :(得分:0)
您的问题不在于代码的csv-reading部分。以下是csv读取部分的简化版本:
import csv
def read_csv(file):
data = []
for row in csv.reader(file):
data.append(row)
return data
if __name__ == '__main__':
path = "test.csv"
with open(path, 'r') as f:
print(read_csv(f))
输出是:
[['07037062611 07063724920'], [], ['08065537377 08168571687']]
如您所见,它正确读取空白行并读取完整文件。问题在于您尝试使用空白行的方式,就好像它不是空白一样。您只需在使用前检查该行:
if row:
#do something
else:
#blank row