0

在下面的函数中,我从模板上传一个文件并将其传递给下面的函数。但是如果有 \n 或 \t( This is a tab separated file),数据就会被削弱。

1.如果有\n或一些特殊字符,它将数据存储在下一行。如何避免这种情况。

2.data is not None 或 data != "" 仍然存储空值

def save_csv(csv_file,cnt):
 ret = 1
 arr = []
 try:
  flag = 0
  f = open(csv_file)
  for l in f:
     if flag == 0:
        flag += 1
        continue
     parts = l.split("\t")
     counter = 1
     if(len(parts) > 6):
        ret = 2
     else:
        taggeddata = Taggeddata()
        for data in parts:
           data = str(data.strip())
           if counter == 1 and (data is not None or data != ""):
              taggeddata.field1 = data
           elif counter == 2 and (data is not None or data != ""):
              taggeddata.field2 = data
           elif counter == 3 and (data is not None or data != ""):
              taggeddata.field3 = data
           elif counter == 4 and (data is not None or data != ""):
              taggeddata.field4 = data
           elif counter == 5 and (data is not None or data != ""):
              taggeddata.field5 = data
           elif counter == 6 and (data is not None or data != ""):
              taggeddata.field6 = data
           counter += 1
        taggeddata.content_id = cnt.id
        taggeddata.save()
        arr.append(taggeddata)
  return ret
except:
  write_exception("Error while processing data and storing")
4

1 回答 1

2
  1. 使用 stdlib 的 csv 模块来解析你的文本,它会更好。

  2. 你的表达data is not None or data != ""总是正确的,你的意思是data is not None and data != ""。请注意,您可以将其简化为elif counter == 3 and data:

于 2012-07-24T12:58:08.597 回答