0

次の関数では、テンプレートからファイルをアップロードして次の関数に渡します。ただし、\n または \t( This is a tab separated file) があるとデータが破損します。

1.\n またはいくつかの特殊文字がある場合、次の行にデータが格納されます。これを回避する方法。

2.data が None ではないか、data != "" がまだ null 値を格納している

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 に答える