如何列出 CSV 文件中的各个列?
Posted
技术标签:
【中文标题】如何列出 CSV 文件中的各个列?【英文标题】:How to list to individual columns in CSV file? 【发布时间】:2022-01-13 20:18:01 【问题描述】:我有一个我一直在处理的脚本,我从文本文件中提取信息并将其输出到具有特定列标题的 CSV 文件。 我在使用输出写入正确的列时遇到问题。它不是让“interface_list”在“Interface”下写入所有端口名称,而是将它们全部写入行中。我的其他列表也有同样的问题。
这是输出在 csv 文件中的样子:
电流输出
但我希望它看起来像这样:
期望的输出
我对python有点陌生,但一直在通过在线搜索学习。
谁能帮助我了解如何让我的列表进入各自的列?
这是我的代码:
import netmiko
import csv
import datetime
import os
import sys
import re
import time
interface_pattern = re.compile(r'interface (\S+)')
regex_description = re.compile(r'description (.*)')
regex_switchport = re.compile(r'switchport (.*)')
with open('int-ports.txt','r') as file:
output = file.read()
with open('HGR-Core2.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow(['Interface', 'Description', 'Switchport'])
interface_iter = interface_pattern.finditer(output)
interface_list = []
for interface in interface_iter:
interface_list.append(interface.group(1))
writer.writerow(interface_list)
description_iter = regex_description.finditer(output)
description_list = []
for description in description_iter:
description_list.append(description.group(1))
writer.writerow(description_list)
switchport_iter = regex_switchport.finditer(output)
switchport_list = []
for switchport in switchport_iter:
switchport_list.append(switchport.group(0))
f.close()
谢谢。
【问题讨论】:
请提供minimal reproducible example 其他人可以运行并包含可用于测试的文本格式的示例输入数据。 此外,我建议改用 Pandas 数据框。如果需要,它将允许您轻松操作它,然后您可以使用内置函数将其导出到 csv? 这是我正在阅读的 int-ports.txt 文件中的一些文本: interface GigabitEthernet7/10 description test1 switchport trunk native vlan 999 switchport mode trunk !接口 GigabitEthernet7/11 描述 test2 - Storage switchport access vlan 610 switchport mode access speed auto 1000 flowcontrol receive on !接口 GigabitEthernet7/12 说明 未使用 switchport access vlan 99 switchport mode access speed auto 1000 !接口 GigabitEthernet7/13 说明。 switchport access vlan 99 switchport mode access speed auto 1000 【参考方案1】:Append 在循环中会变得非常痛苦。 人们没有意识到资源匮乏的事物是如何迅速发展起来的。
1.A.) All hings to 1 dataframe that later you can export as csv
salary = [['Alice', 'Data Scientist', 122000],
['Bob', 'Engineer', 77000],
['Ann', 'Manager', 119000]]
# Method 2
import pandas as pd
df = pd.DataFrame(salary)
df.to_csv('file2.csv', index=False, header=False)
1.B.) 1 个列表到数据框中的 1 个特定列 from here
L = ['Thanks You', 'Its fine no problem', 'Are you sure']
#create new df
df = pd.DataFrame('col':L)
print (df)
col
0 Thanks You
1 Its fine no problem
2 Are you sure
2.) 导出为 csv documentation
df.to_csv('name.csv',index=False)
【讨论】:
那么如果我要走 Panda 的路线,我应该将它的代码放在我现有代码中的什么位置?当我将变量设置为像您的示例这样的列表时,我让它工作,但是当我阅读文本文档以制作这 3 个不同的列表(interface_list、description_list 和 switchport_list)时,我不确定如何获取这些列表和正确地将其传递给 pd.dataframe,因为我的代码只是出错了。 没关系,有一些玩,我让它工作。感谢您在这方面的帮助! 我很高兴你成功了。我还推荐使用高 lvl 函数更快的 numpy,以便您可以进行基于矩阵的转换以加速流程。以上是关于如何列出 CSV 文件中的各个列?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 CSVHelper 更新现有 CSV 文件中特定列中的值?