Python:re.sub什么都没改变

时间:2014-03-18 21:24:22

标签: python regex

我有以下代码:

def gettextbyxpath(tree, xpath):
    node = tree.xpath(xpath)[0]
    try:
        text = etree.tostring(node, method="text", encoding='UTF-8').strip()
        text = re.sub(' +',' ', text)
        text = re.sub('\n+','\n', text)
        text = re.sub('\n \n','\n', text)
    except:
        text = 'ERROR'
    return text

在最后一行中,我试图摆脱只有一个空格的线条。实际数据中有很多这些。

当我将上面的代码作为独立测试运行时,它运行正常,但在实际代码中,最后一行根本不做任何事情!我已经尝试比较使用和不使用它生成的文件 - 没有区别。

示例输入:

        Brand:

   777,Royal Lion



    Main Products:

           battery, 777, carbon zinc, paper jacket,

我试图摆脱线之间的垂直空白区域。

为什么我的代码可能会像这样表现?

1 个答案:

答案 0 :(得分:1)

以下代码应删除,制表符,新行和除单个空格外的空格。

import re

a ="""
 Brand:

 777,Royal Lion



 Main Products:

 battery, 777, carbon zinc, paper jacket,
"""
p = re.compile(r'[\n\t]+|[ ]{2,}')
print p.sub('',a)