我正在编写一个python脚本,将旧的DayLite联系人转换为CSV格式,以便导入Outlook。我有一个完全几乎完美的功能的脚本,除了一个小问题,但由于大量数据修复它在文件中将采取长期。
电子表格中的联系人列表非常长1,100多行。当文本被写入CSV文件时,一切都很好,除了某些/随机电话号码丢失其前导0并获得' .0'在末尾。但是,大多数电话号码都保留了确切的格式。
这是我的脚本代码:
import xlrd
import xlwt
import csv
import numpy
##########################
# Getting XLS Data sheet #
##########################
oldFormatContacts = xlrd.open_workbook('DayliteContacts_Oct16.xls')
ofSheet = oldFormatContacts.sheet_by_index(0)
##################################
# Storing values in array medium #
##################################
rowVal = [''] * ofSheet.nrows
x = 1
for x in range(ofSheet.nrows):
rowVal[x] = (ofSheet.row_values(x))
######################
# Getting CVS titles #
######################
csvTemp = xlrd.open_workbook('Outlook.xls')
csvSheet = csvTemp.sheet_by_index(0)
csv_title = csvSheet.row_values(0)
rowVal[0] = csv_title
##############################################################
# Append and padding data to contain commas for empty fields #
##############################################################
x = 0
q = '"'
for x in range(ofSheet.nrows):
temporaryRow = rowVal[x]
temporaryRow = str(temporaryRow).strip('[]')
if x > 0:
rowVal[x] = (','+str(q+temporaryRow.split(',')[0]+q)+',,'+str(q+temporaryRow.split(',')[1]+q)+',,'+str(q+temporaryRow.split(',')[2]+q)+',,,,,,,,,,,,,,,,,,,,,,,,,,'+str(q+temporaryRow.split(',')[4]+q)+','+str(q+temporaryRow.split(',')[6]+q)+',,,,,,,,,,,,,,,,,,,,,,,,,'+str(q+temporaryRow.split(',')[8])+q)
j = 0
for j in range(0,21):
rowVal[x] += ','
tempString = str(rowVal[x])
tempString = tempString.replace("'","")
#tempString = tempString.replace('"', '')
#tempString = tempString.replace(" ", "")
rowVal[x] = tempString
######################################
# Open and write values too new file #
######################################
csv_file = open('csvTestFile.csv', 'w')
rownum = 0
for rownum in range(ofSheet.nrows):
csv_file.write(rowVal[rownum])
csv_file.write("\n")
csv_file.close()
很抱歉,如果我的编码不连贯,我是python脚本的初学者。
不幸的是,由于隐私原因,我无法显示或提供联系方式,但我会以确切的格式提供一些示例。
因此,在DayLite文档中,联系人将保存为"名字,姓名,公司,电话号码1,电话号码2,电子邮件"例如: " Joe,Black,Stack Overflow,07472329584," 但是当写入CSV文件时,它将是 " Joe"," Black"," Stack Overflow"," 7472329584.0"。
这很奇怪,因为每次出现这个问题都会有10个左右的精确数字保存完全相同,例如在DayLite中:" + 446738193583"用CSV格式编写时:" + 446738193583"。
我忘了提及(这是一个编辑)很多电话号码保持领先0并且没有得到0的结尾。可能是1/20的电话号码搞砸了。
在我看来,这是一个非常奇怪的错误,这就是我来这里寻求帮助的原因!如果有人有任何想法,我会非常乐意听到他们的意见。干杯。
答案 0 :(得分:0)
问题在Excel文档中存在,但我认为它在我的脚本中撒谎。我放了一个'在每个导致格式错误的数字之前。这意味着从工作表中读取时格式没有问题,并将其成功写回文件。