【发布时间】:2018-08-27 19:54:11
【问题描述】:
我正在尝试将此以空格分隔的文本文件转换为列和行(我希望最终将其转换为 JSON)。我的脚本可能无法分隔列,主要是因为我正在寻找空格。我无法更改输入的格式(进入的文本文件)
我的文件格式有问题,这是一个非常简单的例子
col1 col2 col3 text col4
1403 bash 2014-07-28 22:32:53 UTC+0000 sudo bash
1464 bash 2014-07-28 22:32:28 UTC+0000 sudo root
当我解析文件时,我得到了破折号下方的数据:
['1403', 'bash', '2014-07-28', '22:32:53', 'UTC+0000', 'sudo', 'bash']
我希望它看起来像这样:
['1403', 'bash', '2014-07-28 22:32:53 UTC+0000', 'sudo bash']
这是一个非常基本的例子。但基本上我将标题映射到破折号下方的数据。让我知道您是否可以提供任何帮助。
注意:输出不必完全如图所示,我只是希望能够分离 cols 数据。
到目前为止,这是我在代码中的内容,它将标题分离到各个列:
colNames = testFile.readline()
#tempList = re.split('(\s )', colNames)
headerList = []
for i in tempList:
j = i.replace(' ','')
if j != '':
headerList.append(j)
然后我有一个循环来根据数据的位置遍历数据(这是我认为我需要找到一种更好地分离数据的方法):
for line in testFile.readlines():
if rowCounter > 0:
row = line.split()
print row
for i in range(len(headerList)):
colNameDic.update({headerList[i]:row[i]})
rowDic = dict(colNameDic)
fileList.append(rowDic)
rowDic = {}
rowCounter +=1
【问题讨论】:
-
您解析文件不正确。您需要一个固定列解析器,例如
pandas.read_fwf()。 -
您需要发布您的代码。而且,正如前面评论中所说,它不是一个以空格分隔的文件。它是 1,然后是 15(?),然后是 3 个空格
-
@ChristopherSchneider 我尝试关注空间差异,但有些文件有很多空间,而另一些则没有。例如,如果您注意到 col1 数据和 col2 数据之间只有一次空格,但两者都是不同的 cols。有意义吗?
-
@DYZ 我会检查一下。刚刚发布代码(对不起,这是我的第一次)
-
您确定它是
col3 text而不是,例如col3_text带有下划线、点或逗号...因为空间与标题的结构不同从数据行的结构来看
标签: python json text type-conversion whitespace