Python split('\n') 在中途换行而不是在行尾之后

Python split('\n') breaks a row midway instead of after end of line

我正在尝试解析 Python 中 SQL 查询的输出(由于组织限制无法安装 cx_Oracle,因此必须采用子流程方式。

这是我的子进程命令的输出

output1 = sqlplus.communicate()[0].split('\n')

['', '05/02/2016 19:42:40,ABC,O\t\t\t\t  ,ACTIVE', '\t   49', '', '05/02/2016 19:42:40,ABC,O\t\t\t  ,INACTIVE', '\t   11', '']

为了使日期有意义,我试图删除所有空格和制表符,但有一列让我很头疼。

当我尝试使用以下代码从之前的输出中删除额外的内容时,最后一列被撞到下一行而不是留在同一行中。我知道这可能是因为最后一列中的前导 \t(制表符),但我无法删除它。我几个小时以来一直在尝试使用 strip、lstrip、rstrip、正则表达式,但无济于事。

for line in output1:
    if(line != ''):
            print ",".join([str(x.strip()) for x in line.split(',')])

下面是我的最终输出,但最后一列在下一行

05/02/2016 19:53:52,ABC,O,ACTIVE
49
05/02/2016 19:53:52,ABC,O,INACTIVE
11

需要一些帮助来找出我缺少的东西。预先感谢您的所有投入:)

--吉姆

您似乎希望每一行都是列表中空字符串之间的字符串?这些空字符串是由“/n/n”上的 split() 创建的,因此其中有一个空行。你可以先拆分那些空行:

output1 = '\n05/02/2016 19:42:40,ABC,O\t\t\t\t  ,ACTIVE\n\t   49\n\n05/02/2016 19:42:40,ABC,O\t\t\t  ,INACTIVE\n\t   11\n'
output1 = output1.split('\n\n')

然后您可以使用一系列替换、拆分、剥离和连接来重新组合,拆分逗号和白色 space 除了 spaces。

for line in output1:
    line = line.replace(' ', '(^_^)')
    line = line.split()
    line = [word.replace('(^_^)', ' ').strip() for word in line]
    line = ','.join([word.strip(',') for word in line])
    print line