替换字符串中的单词中的额外空格

时间:2017-06-14 20:20:19

标签: python regex string replace

我有一个巨大的字符串列表,我正在迭代创建一个字典。我不知道每个字符串中会包含什么内容,因为它是从填充表格的文档中解析出来的。

有时字符串中会有额外的空格,或者单词中间的空格,而单词文档中没有空格。

有没有办法检测单词之间的额外空格,以及单词之间的额外空格。

示例

myString = 'I have  N o other way to get here'
myString = detectedDoubleSpace_After_Have_AndSpace_In_Middle_Of_No(myString.replace(stuff))

我知道正则表达式,替换函数,strip,lstrip,rstrip。 但是,我不知道如何在一个单词的中间专门寻找双重空格或空格。

修改

显然这是一项艰巨的任务,因为检测到什么是单词并且不是单词是一个问题,我没有考虑过。

2 个答案:

答案 0 :(得分:1)

好的,您的第一个问题很容易解决。您需要做的就是使用正则表达式来删除单词之间的双重空格。

import re
your_text = ... # some text here

your_text_without_extra_spaces = re.sub('[\s]+', ' ', your_text, flags=re.M)

第二个问题并不那么简单。但是,您可以做的一种方法是寻找一些巨大的英语语料库并从中构建一个集合/词典。

或者,您可以使用NLTK包,并检查字符串中单词的同义词。

from nltk.corpus import wordnet

processed_text = ''
i = 0
words = your_text_without_extra_spaces.split()
while i < len(words):
    if not wordnet.synsets(words[i]) and i < len(words) - 1 and not wordnet.synsets(words[i + 1]):
        processed_text += words[i] + words[i + 1] + ' '
        i += 2
    else:
        processed_text += words[i] + ' '
        i += 1

如果您在安装wordnet时遇到问题或想尝试其他方法,请参阅this article

答案 1 :(得分:0)

尝试\s\s匹配两个单词之间的双倍空格