Python FreshMan

★☆ Python新手的Blog ☆★
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

删除代码行号的Python小工具——正则表达式版

Posted on 2010-02-20 11:33  闫小勇  阅读(1951)  评论(0编辑  收藏  举报

今天搞了一上午,终于写出了正则表达式版本的代码行号删除工具,正则表达式真是太强大了,非常有用,看来还要继续深入学习啊。

下边是PyQt4的代码,核心函数是MyRegex,可以很容易地改成wxPython界面,参见我的上一篇文章《我的第一个Python程序——去除代码前行号的Python小工具》。当然如果你愿意,也很容易用其他支持正则表达式的语言改写这个程序。

 

 

# -*- coding: utf-8 -*-
"""
去除代码前行号的Python小工具-正则表达式版
Develop by YanXY
"""
import sys
import re
from PyQt4 import QtCore, QtGui

app
= QtGui.QApplication(sys.argv)
window
= QtGui.QWidget()
window.resize(
800, 600)
window.setWindowTitle(u
'去除代码前行号的Python小工具 - 正则表达式版 - Develop by YanXY')
textBox
= QtGui.QTextEdit()
textBox.setAcceptRichText(bool(0))
butOK
= QtGui.QPushButton(u"去除行号")

layout
= QtGui.QHBoxLayout()
layout.addWidget(textBox)
layout.addWidget(butOK,alignment
= QtCore.Qt.AlignTop)
window.setLayout(layout)

def CutLineNum():
textBox.setText(MyRegex(unicode(textBox.toPlainText()).splitlines(
1)))

def MyRegex(multiLine = []):
outStr
= u''
p
= re.compile(r'\D*\d+\s?[.|:|\]|\)]?\s?')
""" 以上正则表达式的含义是:0或多个非数字字符 + 至少1个数字字符 + 0或1个空白字符 +
0或1个分隔符(目前包括点、冒号、右圆/方括号,其他分隔符请自己添加) +
0或1个空白字符(这个可以不要,有时候影响代码缩进)
"""
for singleLine in multiLine:
outStr
+= p.sub( '', singleLine,count = 1 )
return outStr

QtCore.QObject.connect(butOK,QtCore.SIGNAL(
"clicked()"),CutLineNum)
window.show()
sys.exit(app.exec_())