我正在学习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开头。
我该怎么做?
答案 0 :(得分:0)
您可以尝试修改以满足您的需求。有两个功能:
lexer()
- 吃掉输入并始终返回令牌和缓冲区。令牌是TOK_EOF
(输入结束)或TOK_STRING
(例如NAME或PARM3)或TOK_PARLIST
(括号中的内容,例如(data)
)。< / LI>
parser()
- 实现一个简单的语法。它会调用lexer()
并始终需要TOK_EOF
或TOK_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)