港口号码' mangle'将CSV导入Excel 2010时

时间:2015-09-01 11:38:27

标签: python excel csv ciscoconfparse

更新:我现在看到CSV编写器正确解析端口号,即使使用dialect =' excel'。不确定我之前看到的是什么,但显然早些时候没有这样做。在证明不是这样之前,我必须考虑它。无论如何,我愿意接受尝试......

我使用CiscoConfParse解析多个文件并编写CSV文件,并将信息拆分为单独的单元格。我的问题是,如果端口号开头是' 0'即' 0/1',但csv.writer无法正确解析端口号。例如,' 1/1'出现' Jan-00'当使用方言=' excel'如下。

此处是我的代码:

import os
import re
from ciscoconfparse import CiscoConfParse 
import csv

def main():

    path="K:\\Temp work\\120\\New\\Configs\\Working\\"  # insert (\\) the path to the directory of interest   
    for path, dirs, files in os.walk(os.path.abspath(path)):
        for f in os.listdir(path):
            file_path = os.path.join(path, f)
            out_file = 'PC.csv'  # change to the name of the file to be created
            fo = open(out_file, "ab")
            fWriter = csv.writer(fo, dialect='excel')
            fWriter.writerow([f])

            with open(file_path, "r"):
                parse = CiscoConfParse(file_path)
                vlanList = parse.find_blocks("(?i)^interface [Pp]")
                for line in vlanList:
                    lod = re.split(r'\s*',line)
                    writer = csv.writer(fo, delimiter=",", dialect='excel') 
                    writer.writerow(lod)

            fo.close()

if __name__=='__main__':
        main()

当我更改代码以包含以下内容时...

csv.register_dialect('singlequote', quotechar="'", quoting=csv.QUOTE_ALL)

...并改为dialect =' singlequote'在文本编辑器中查看时,可以正确解析CSV。然后我导入到Excel中,虽然一切都正确,但它当然有单引号。

不幸的是,我现在不想要单引号。我已选择所有内容并将其格式化为文本,然后在引号字符上替换为“没有”'并且单引号会离开,但Excel会将字段更改为返回日期字段,然后我回到我开始的位置。我当然可以在CSV(文本)文件中删除引号,但是当它被导入Excel时 - 即使我手动导入并指定字段是文本,Excel仍将覆盖我的格式并使其成为日期。 (注意:我已经尝试在Excel中关闭自动更正)

有什么建议吗?

0 个答案:

没有答案