将缺失的字符添加到句子中

Add missing characters to sentences

我正在 python 中处理文本,并且有几个缺少字符的情况,例如:

test_list = ['people can t believe','we couldn t be happier','let s not forget']

在test_list中所有的撇号都不见了,我写了一个函数重新添加:

def add_apostrophe(sentense):
    words = sentense.split()
    fixed_s = []
    flag = False
    buffer_ = ''
    for w in reversed(words):
        if flag:
            fixed_s.append(''.join([w,buffer_]))
            flag = False
            buffer_ = ''
        elif  w in ['t','s']:
            flag = True
            buffer_ = "'{}".format(w)
        else:
            fixed_s.append(w)
    fixed_s = ' '.join(reversed(fixed_s))
    return fixed_s

此类作品:

[add_apostrophe(s) for s in test_list]

["people can't believe", "we couldn't be happier", "let's not forget"]

但我认为这在某些情况下可能会破坏句子,我还没有对其进行详尽的测试。 此外,这似乎是一个常见问题,是否有一些库可以恢复丢失的撇号和其他一些字符?

您可以使用正则表达式来完成。但这可能不是详尽的报道。

import re
test_list = ['people can t believe','we couldn t be happier','let s not forget']
print [re.sub(r"(\s?)([a-zA-Z]+)\s([a-zA-Z]{1})\s",r"' ", a) for a in test_list]

输出:

["people can't believe", "we couldn't be happier", "let's not forget"]

正则表达式解释:

(\s?)([a-zA-Z]+)\s([a-zA-Z]{1})\s

(\s?) - 匹配并捕获 0 或 1 space 作为第 1 组。
([a-zA-Z]+) - 将 1 个或多个字母作为组 2
进行匹配和匹配 \s - 匹配 1 space
([a-zA-Z]{1}) - 匹配并捕获 1 个字母作为组 3
\s - 匹配 1 space

\1、\2 和 \3 - 第 1 组、第 2 组和第 3 组