使用python将包含MQSC的文本文件转换为csv格式的输出文件

时间:2015-01-21 15:22:12

标签: python csv

我正在学习python并且已经在这个伟大的站点上尝试了各种代码解决方案,但是无法使用MQSC数据的格式正常工作,所以作为示例输入文件......

NAME(XX.XXX.XXX)        PARM1 (any data)

PARM2( )            PARM3(data)

PARM4(data)         PARM5(data(more data))

NAME(YY.XXX.XXX)        PARM1 (any data)

PARM2(long data could contain NAME)

PARM3(data(moredata))   PARM4( )

PARM5(data)         

NAME(ZZ.XXX.XXX)        PARM2(data)

PARM3(data)

......等等......

我正在尝试以...格式编写输出文件。

NAME(XX.XXX.XXX),PARM1 (any data),PARM2( ),PARM3(data),PARM4(data),PARM5(data(more data))

NAME(YY.XXX.XXX),PARM1 (any data),PARM2(long data could contain NAME),PARM3(data(moredata)),PARM4( ),PARM5(data)

NAME(ZZ.XXX.XXX),PARM2(data),PARM3(data)

因此,如果仅在col 1中,则需要保留括号内的空格,需要删除PARMS / LABELS之间的空格并用逗号分隔,否则新行始终以NAME开头。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以尝试修改以满足您的需求。有两个功能:

  • lexer() - 吃掉输入并始终返回令牌和缓冲区。令牌是TOK_EOF(输入结束)或TOK_STRING(例如NAME或PARM3)或TOK_PARLIST(括号中的内容,例如(data))。< / LI>
  • parser() - 实现一个简单的语法。它会调用lexer()并始终需要TOK_EOFTOK_STRING。在TOK_STRING的情况下,它再次调用lexer()并需要令牌TOK_PARLIST

parser()中,输出以CSV格式生成,使用变量output_generated来确定是否输出换行符等。parser()看到令牌{{1然后它将值TOK_STRING强制输出到新行。

根据您的输入,输出如下。您可能需要重新检查是否根据需要保留或删除元素之间的所有空格。

'NAME'

最后,这里是代码,希望它足够清晰,让你可以继续。

NAME(XX.XXX.XXX),PARM1(any data),PARM2( ),PARM3(data),PARM4(data),PARM5(data(more data)),
NAME(YY.XXX.XXX),PARM1(any data),PARM2(long data could contain NAME),PARM3(data(moredata)),PARM4( ),PARM5(data),
NAME(ZZ.XXX.XXX),PARM2(data),PARM3(data)