写入文件随机丢失并获得0

时间:2016-10-28 10:30:22

标签: python file csv random

我正在编写一个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的电话号码搞砸了。

在我看来,这是一个非常奇怪的错误,这就是我来这里寻求帮助的原因!如果有人有任何想法,我会非常乐意听到他们的意见。干杯。

1 个答案:

答案 0 :(得分:0)

问题在Excel文档中存在,但我认为它在我的脚本中撒谎。我放了一个'在每个导致格式错误的数字之前。这意味着从工作表中读取时格式没有问题,并将其成功写回文件。

相关问题