Python 替换字符串中word中的额外空格

Python 替换字符串中word中的额外空格,python,regex,string,replace,Python,Regex,String,Replace,我有一个庞大的字符串列表,我正在遍历这些字符串来创建字典。我不知道每个字符串将包含什么,因为它是从一个充满表格的文档中解析出来的 有时字符串会有额外的空格,或者单词中间的一个空格,在Word文档中没有。 是否有一种方法可以检测单词之间的额外空格,以及单词之间的额外空格 import re your_text = ... # some text here your_text_without_extra_spaces = re.sub('[\s]+', ' ', your_text, flags=

我有一个庞大的字符串列表,我正在遍历这些字符串来创建字典。我不知道每个字符串将包含什么,因为它是从一个充满表格的文档中解析出来的

有时字符串会有额外的空格,或者单词中间的一个空格,在Word文档中没有。 是否有一种方法可以检测单词之间的额外空格,以及单词之间的额外空格

import re
your_text = ... # some text here

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

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。 但是,我不知道如何在词的中间寻找双空间或空格。

编辑
另外,这是一项艰巨的任务,因为检测单词的是非是一个问题,我没有考虑过。尝试
\s\s
匹配两个单词之间的双空格好的,第一个问题很容易解决。您所需要做的就是使用正则表达式删除单词之间的双空格

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
从nltk.corpus导入wordnet
已处理的_文本=“”
i=0
words=没有额外空格的文本。split()
而我(用词):
如果不是wordnet.synsets(单词[i])和i

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

没有简单的方法可以检测
hel-lo
是一个单词还是两个单词。你可能应该搜寻一些语料库,建立一个有效单词的dict/集合,然后假设你遇到的任何无效单词实际上是一个被空格一分为二的单词。除非你建立一个字典,否则很难知道有效单词是什么。例如,获取她的
是一组有效的3个单词,或者是一组无效的带两个空格的一个单词(
)。。。看到问题了吗?@Coldspeed这将是一项巨大的工作,因为我正在从word文档解析这些列表。我希望有一个合理简单的方法来使用正则表达式。如果没有,我可以接受。我建议你修复你的语法分析,这样就不会在不应该存在的单词之间留出空格。我在从OCRD PDF进行文本挖掘时也遇到了同样的问题。很多额外的空间。我所做的是提取所有的2个字母,然后如果两个字母中的一个不在我的字典中(词形变化的单词列表),并且连接在一起,那么它们会被建议手动检查。不过我不是用英语做的。如果你能找到一个很好的英语词形变化列表,我想明天我可以给你一个满意的解决方案