我有一些文本,如下所示:
1.6 # blah blah blah
# fjsadfklj slkjf yes 3.4
1.8*
1.9 1.10 #blah
#blah
1.11
我想通过删除同一行中所有的#
字符及其后面的内容来清理它。换句话说,我希望:
1.6
1.8*
1.9 1.10
1.11
什么是最好的方法来解决这个问题?通过像partition
这样简单的方法,还是使用正则表达式?
我有一些文本,如下所示:
1.6 # blah blah blah
# fjsadfklj slkjf yes 3.4
1.8*
1.9 1.10 #blah
#blah
1.11
我想通过删除同一行中所有的#
字符及其后面的内容来清理它。换句话说,我希望:
1.6
1.8*
1.9 1.10
1.11
什么是最好的方法来解决这个问题?通过像partition
这样简单的方法,还是使用正则表达式?
example = '''1.6 # blah blah blah
# fjsadfklj slkjf yes 3.4
1.8*
1.9 1.10 #blah
#blah
1.11'''
for line in example.splitlines():
print(line.split('#', 1)[0])
如果您真的想获得评论文本,代码很容易被修改以允许其捕获。
timeit
显示 split 也快了约4倍。python -m timeit 'strs = ("x"*(100 - i%101) + "#" + "y"*100 for i in xrange(10000)); import re' 'for s in strs: re.sub(r"\s*#.*", "", s)'
和 s.split("#", 1)[0]
。在我的机器上,31.5毫秒对7.02毫秒。 - Cireo