如何在Python中的string.punctuation之后添加空格?

时间:2016-12-07 10:31:11

标签: python regex python-2.7

我想清理我的评论数据。这是我的代码:

def processData(data):
    data = data.lower() #casefold    
    data = re.sub('<[^>]*>',' ',data) #remove any html     

    data = re.sub(r'#([^\s]+)', r'\1', data) #Replace #word with word
    remove = string.punctuation
    remove = remove.replace("'", "") # don't remove '
    p = r"[{}]".format(remove) #create the pattern
    data = re.sub(p, "", data)

    data = re.sub('[\s]+', ' ', data) #remove additional whitespaces

    pp = re.compile(r"(.)\1{1,}", re.DOTALL) #pattern for remove repetitions 
    data = pp.sub(r"\1\1", data)

    return data

此代码几乎运行良好,但仍存在问题。 这句话&#34;她在公共服务部门工作&#34; ,

我得到了#34;她在公共服务工作&#34;。

问题是字符串标点后没有空格。

我希望我的判决就像这样#34;她在公共服务部门工作&#34;。

你能帮我解决一下我的代码吗?

1 个答案:

答案 0 :(得分:1)

我想你想要这个:

>>> st = 'she works in public-service'
>>> import re
>>> re.sub(r'([{}])'.format(string.punctuation),r' ',st)
'she works in public service'
>>>