将缺失的字符添加到句子中
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 组
我正在 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 组