使用python中的正则表达式消除单词之间的空格

时间:2017-10-05 12:17:33

标签: python regex

我希望消除包含多个单词的句子中的2个单词之间的空格

我的代码如下所示:

//get choosen file
var fileContent = new FormData();
fileContent.append("file",$('input[type=file]')[0].files[0]);
$.ajax({
     type: "POST",
      enctype:"multipart/form-data",
       url: "uploadCsvData",
       data: fileContent,
       processData: false,
       contentType: false,
       success: function(response) {
        }
});

输出:

import re
sentence = "open app store"
pattern = re.compile(r'\b([a-z]) (?=[a-z]\b)', re.I)
sentence = re.sub(pattern, r'\g<1>', sentence)
print(sentence)

我想删除应用和商店之间的空白区域。我想要这样的输出&#34;打开appstore&#34;。

请注意,open app store 始终不会提出appstore可能会出现其后的其他字词,例如app

3 个答案:

答案 0 :(得分:1)

让我们看一下your pattern:它匹配一个字边界,然后将任何ASCII字母捕获到第1组,然后匹配一个空格,然后断言有一个ASCII字母后跟一个字边界。因此,它可以匹配a b中的My a b string,但不匹配app store

现在,您的app值似乎是静态的,只有在app后面还有另一个单词时才要匹配1个或多个空格。您可以遵循两种策略。

您可以匹配后跟空格和字母的app,然后删除空格(请参阅this Python demo):

re.sub(r"\b(app)\s+([a-z])", r"\1\2", sentence, flags=re.I)

(另请参阅the regex demo)或者您可以使用app后面的已知字词,只删除它们之间的空格:

re.sub(r"\b(app)\s+(store|maker|market|etc)", r"\1\2", sentence, flags=re.I)

请参阅another regex demoanother Python demo

答案 1 :(得分:0)

这可能适合你。

>>> import re
>>> sentence = "this is an open app store and this is another open app store."
>>> pattern = re.compile(r'app[\s]store')
>>> replacement = 'appstore'
>>> result = re.sub(pattern, replacement, sentence)
>>> result
'this is an open appstore and this is another open appstore.'

编辑:您可以使用此功能消除任意两个单词之间的空格。

import re

def remove_spaces(text, word_one, word_two):
    """ Return text after removing whitespace(s) between two specific words.

    >>> remove_spaces("an app store app maker app    store", "app", "store")
    'an appstore, app maker, appstore'
    """

    pattern = re.compile(r'{}[\s]*{}'.format(word_one, word_two))    # zero or more spaces
    replacement = word_one + word_two
    result = re.sub(pattern, replacement, text)

    return result

答案 2 :(得分:-1)

试试这个:

\Exception

输出:这是测试

希望它适合你。