我试图将德语句子中的点与单词分开,而不是用数字分隔,例如:
"Der 17. Januar war ein toller Tag. Heute ist es auch schön."
应以
结尾"Der 17. Januar war ein toller Tag . Heute ist es auch schön . "
但我无法找到解决方案。我试图在Python中使用re
模块但没有成功。
line = re.sub(r'[^0-9]+\.', ' . ', line)
将以
结尾"Der 17. Januar war ein toller Ta . Heute ist es auch schö . "
答案 0 :(得分:2)
你必须在正则表达式中使用正面的背后隐藏:
import re
s = "Der 17. Januar war ein toller Tag. Heute ist es auch schön."
final_string = re.sub("(?<=[a-zA-Z])\.(\s|$)", ' . ', s)
print(final_string)
输出:
Der 17. Januar war ein toller Tag . Heute ist es auch schön .
答案 1 :(得分:1)
以防万一,您不想使用正则表达式。这是另一种选择。
def tokenize_using_dot(s_input):
s_list = s_input.split()
for idx in range(len(s_list)):
if s_list[idx][-1] == '.' and not s_list[idx][0:-1].isdigit():
s_list[idx] = s_list[idx].replace('.', ' .')
return' '.join(s_list)
s = "Der 17. Januar war ein toller Tag. Heute ist es auch schön."
print(tokenize_using_dot(s))
输出:
Der 17. Januar war ein toller Tag . Heute ist es auch schön .
正如@phg评论的那样,从nltk套装中使用适当的标记生成器来处理这些类型的任务是个好主意。