有没有办法将多个正则表达式语句组合成一个,这样它可以在一次传递中执行不同的子传输?
no_Punct = re.sub('(\w)([?:!.,;-]+)(\s)',r'\1 ',raw)
no_Punct = re.sub('(\s)([-]+)(\s)',r'\1',no_Punct)
输入字符串是'raw'。我试图在单词的末尾去除某些标点符号并删除每边都有空格包围的连字符。我可以将这两者合并为一个陈述吗?
鉴于以下内容的输入: 这是一句话!四分之一等于.25。
输出是: 这是四分之一的句子等于.25
答案 0 :(得分:5)
简单地说,只需将一个替换为另一个:
no_Punct = re.sub('(\s)([-]+)(\s)', r'\1', re.sub('(\w)([?:!.,;-]+)(\s)', r'\1 ', raw))
虽然这可能也有效:
no_Punct = re.sub('(?<=\w)[?:!.,;-]+(?=\s)|(?<=\s)-+\s', '', raw)