将 CSV 导入 Excel 2010 时端口号“mangle”

问题描述 投票:0回答:1

更新:我现在看到 CSV 编写器正确解析端口号,即使使用 dialect='excel' 也是如此。不确定我之前看到了什么,但显然之前并没有这样做。在证明并非如此之前,我必须认为它是可疑的。无论如何,我愿意尝试各种想法......

我正在使用 CiscoConfParse 解析多个文件并编写一个 CSV 文件,其中的信息分为单独的单元格。 我的问题是,如果端口号以“0”(即“0/1”)开头,则看起来不错,但 csv.writer 无法正确解析端口号。 例如,当使用 dialect='excel' 时,“1/1”会输出“Jan-00”,如下所示。

这是我此时的代码:

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 中的自动更正功能)

有什么建议吗?

python excel csv ciscoconfparse
1个回答
0
投票

我正在使用 CiscoConfParse 解析多个文件并编写一个 CSV 文件,其中的信息分为单独的单元格。我的问题是,如果端口号以“0”(即“0/1”)开头,则看起来不错,但 csv.writer 无法正确解析端口号。例如,当使用 dialect='excel' 时,“1/1”会输出“Jan-00”,如下所示。

最简单的答案是将端口名称和端口号一起使用。

示例...今天您查看

interface GigabitEthernet 1/1
并且只将
1/1
放入 csv 文件中;但是,最好将
GigabitEthernet 1/1
放入 csv 中...这样 excel 甚至不会尝试将接口编号误解为日期。

© www.soinside.com 2019 - 2024. All rights reserved.