2016-10-22 80 views
1

我有一個使用Twilio的Python程序,我剛從PKL數據庫移動到CSV。我讀到訪問時間大致相同,但想要更容易編輯。通過Excel保存CSV中的前導「+」

問題是Twilio喜歡電話號碼(我將其存儲在數據庫中)的前導「+」,但在Excel中編輯時會刪除所有這些前導加號。

處理Twilio的python電話號碼存儲的最佳方式是什麼?

def save_pkl(pkl, name): 
    with open(os.path.join(__location__,name + '.pkl'), 'wb') as f: 
     pickle.dump(pkl, f, 0) #replace 0 with pickle.HIGHEST_PROTOCOL 

def load_pkl(name): 
    with open(os.path.join(__location__,name + '.pkl'), 'rb') as f: 
     return pickle.load(f) 

def save_csv(obj, name): 
    f=open(os.path.join(__location__,name+'.csv'),"wb") 
    writer=csv.writer(f) 
    if name=="customer": 
     writer.writerow(("Name","MobileNumber","Email","Joined")) 
     for number in obj: 
      writer.writerow((obj[number]["name"],number,obj[number]["email"],obj[number]["joined"]))  
    else: 
     writer.writerow(("Name","MobileNumber","Email")) 
     for number in obj: 
      writer.writerow((obj[number]["name"],number,obj[number]["email"])) 
    f.close() 

def load_csv(name): 
    db={} 
    f=open(os.path.join(__location__,name+'.csv'),"rb") 
    headers = next(f).strip().split(",") 
    freader = csv.reader(f) 
    for entry in freader: 
     name = entry[0] 
     mobilenumber = entry[1] 
     email = entry[2] 
     db[mobilenumber]={"name" : name, "email" : email} 
     if "Joined" in headers: 
      joined = entry[3] 
      db[mobilenumber]["joined"] = joined 
    f.close() 
    return db 
+0

你能提供你的代碼嗎? – xli

+0

@xli我只是添加了我的pkl和csv加載/保存代碼 – atclaus

回答

1

文本之前蜱保存公式的解釋在細胞首先想到,可能是有用的(ex: '+33 445 455 333)

除了在CSV它不支持。它似乎工作,但它失去了保存到CSV時,額外的引用也不起作用。

作爲替代方案,你可以節省你的數據庫中XLSX,而不是CSV

  • 領先蜱呢工作
  • 您可以用Excel作爲輕鬆地編輯您的文件
  • Python有至少2個模塊,妥善處理XLSX:openpyxl和xlrd

(我希望你不會找到我的答案基於意見,因爲確實可能存在其他幾種有效的解決方案)

+0

謝謝。我可能會嘗試去XLSX,但需要耐心再次轉換一切。我寫了一個python數據庫管理程序,很好地管理PKLs,所以可以通過easygui來保持它,但希望有一個更簡單的解決方案... – atclaus

+0

當'csv' *方言*設置爲' excel'?也許你可以嘗試一下。 –

+0

似乎是合乎邏輯的事情,但這取決於你的代碼。 –