2016-10-22 71 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

似乎是合乎逻辑的事情,但这取决于你的代码。 –