Python 以空格分隔的csv,列名称和值中有空格

Python 以空格分隔的csv,列名称和值中有空格,python,pandas,csv,Python,Pandas,Csv,我必须将csv文件加载到dataframe,但列之间用单个空格分隔,并且列/值名称中也包含空格。文件如下所示: 'Mod Ports Card Type Model Serial No.', ' 3 20 7600 ES+ 7600-ES+20G3C SAL1550Y9DL', ' 5 2 Route Switch Proce

我必须将csv文件加载到dataframe,但列之间用单个空格分隔,并且列/值名称中也包含空格。文件如下所示:

'Mod Ports Card Type                              Model              Serial No.',
'  3   20  7600 ES+                               7600-ES+20G3C      SAL1550Y9DL',
'  5    2  Route Switch Processor 720 (Active)    RSP720-3C-GE       SAL16095Q9W',
etc.
到目前为止,我最好的办法是检查列名中单词的长度,然后检查相应的值越低,字符数越少,但在某些情况下,如“Card Type”和“7600 ES+”可能会被识别为两个单独的列

重要的是,这个解决方案必须是通用的,不仅适用于这个例子,也适用于不同的例子。我的目标是将此文件读取到dataframe或任何其他数据结构

我试图使用
pd.read_fwf()
函数,但结果不正确。我的文件的输出数据帧如下所示:

'Mod Ports Card Type                              Model              Serial No.',
'  3   20  7600 ES+                               7600-ES+20G3C      SAL1550Y9DL',
'  5    2  Route Switch Processor 720 (Active)    RSP720-3C-GE       SAL16095Q9W',
etc.

因此,它不仅没有正确捕获
卡类型
,而且还将其与端口合并并创建了一些未命名的列。

您可以使用:

如果为每列提供
widths
参数,它将工作得最好

编辑

使用您提供的数据,您可以使用
colspecs
参数获得结果:

df = pd.read_fwf(a, colspecs=[(0, 4), (4, 10), (10, 49), (49, 68), (68, 1000)])
df

   Mod  Ports                            Card Type          Model   Serial No.
0    3     20                             7600 ES+  7600-ES+20G3C  SAL1550Y9DL
1    5      2  Route Switch Processor 720 (Active)   RSP720-3C-GE  SAL16095Q9W

到目前为止你试过什么?请分享代码来重现您的尝试,并解释为什么它不起作用。坦率地说,我甚至无法编写任何远程工作的代码。我所拥有的只是概念,但我知道它不会在所有情况下都起作用。遗憾的是,它可能无法工作,并返回带有“Unnamed:2”等列的dataframe。是的,问题是我不知道这些宽度,因为它不是我必须处理的唯一一个这样的表。除非我有办法自动预测此大小,否则此解决方案将不起作用。@首先,您可以检查文件的第一行,查看每列所占的字符数(包括空格)。我仍然不确定您想怎么做。我的意思是,我该如何对代表不同栏目的内容进行分类。”“Card”和“Type”很可能是单独列的名称,但它们不是。当我尝试不使用widths参数时,它们不起作用:(是的,但在这种情况下,您假设我知道每列的宽度。我需要的是一个解决方案,它可以单独处理许多不同宽度的文件。