最近在开发一个汇编的逆差指令工具,php版的,打算把这些信息不保存着数据库中,而存放在xml文件里。但是自己一个节点一个节点的敲击,这种枯燥机械的东西–作为一个懒人,岂能去做?于是乎就用了一个工具,python。但是,有的时候需要用raw_input()函数接受大量的信息,这些信息中,不免出现换行符,这样就自动的跑到第二个参数了,并且第一个参数还没能写完。当时,我就卡在如何输入原始字符串,不过到最后,这种仍是没能解决,不过多亏Caesa另辟蹊径,利用死循环解决了换行符号问题。就是捕捉到中断异常的时候再退出循环,不遇到就反复对这个参数实行raw_input()输入。

                print 'Please input code'
                while True:
                        try: code += (raw_input()).decode('gbk')
                        except KeyboardInterrupt:
                                print '\nPlease input format'
                                break

这样,就可以避免了换行符导致参数的输入中断。

直到捕捉到ctrl+c(在Windows下的命令行的中断),才会引起输入异常,被try捕捉。except处理,跳出死循环,到下一个参数。

这样,得到的文本是一个完全没有换行符的文本,格式绝对难看,为了保留换行符,我们可以给他添加以下。因为一个循环的开始,就说明是一个/n的出现,中断了该次输入。那么我们就在每次循环时,给raw_input()+’/n’不就好了?

                print 'Please input code'
                while True:
                        try: code += (raw_input()+'/n').decode('gbk')
                        except KeyboardInterrupt:
                                print '\nPlease input format'
                                break

至于我制作xml节点用的,直接将/n换成<br>即可。

参考:

http://stackoverflow.com/questions/9047349/python-raw-input-ignore-newline
http://www.16kan.com/question/detail/45158.html
页面下部广告

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

鲁ICP备17018668号-1