Python 拆分具有一个分隔符但具有多个条件的字符串

Python 拆分具有一个分隔符但具有多个条件的字符串,python,regex,python-2.7,split,string-split,Python,Regex,Python 2.7,Split,String Split,早上好 我发现有多个线程处理使用多个分隔符分割字符串的问题,但没有使用一个分隔符和多个条件 我想将以下字符串按句子拆分: desc=安娜·皮特利克博士是保守和美学牙科专家。她会说英语和波兰语 如果我这样做: [t.split('.')表示描述中的t] 我得到: ['Dr','Anna Pytlik是保守和美学牙科专家,'她会说英语和波兰语。'] 我不想把“Dr”后面的第一个点分开。在这种情况下,.split('.')不应应用,如何添加子字符串列表 谢谢大家! 您可以使用re.split和: 例如

早上好

我发现有多个线程处理使用多个分隔符分割字符串的问题,但没有使用一个分隔符和多个条件

我想将以下字符串按句子拆分:

desc=安娜·皮特利克博士是保守和美学牙科专家。她会说英语和波兰语

如果我这样做:

[t.split('.')表示描述中的t]

我得到:

['Dr','Anna Pytlik是保守和美学牙科专家,'她会说英语和波兰语。']

我不想把“Dr”后面的第一个点分开。在这种情况下,.split('.')不应应用,如何添加子字符串列表


谢谢大家!

您可以使用
re.split
和:

例如:

>>> text = "Dr. Anna Pytlik is an expert in conservative and aesthetic dentistry. Prof. Miller speaks both English and Polish."
>>> [subst_titles(s, True) for s in subst_titles(text).split(". ")]
['Dr. Anna Pytlik is an expert in conservative and aesthetic dentistry', 'Prof. Miller speaks both English and Polish.']

您可以拆分,然后再次加入Dr/Mr/。。。
它不需要复杂的正则表达式,而且速度更快(您应该对其进行基准测试以选择最佳选项)。

编译/获取缩写列表并进行匹配。其中,
X
是“使用多个分隔符拆分字符串”,Y是“我想按句子拆分以下字符串”。答案可能是
nltk.sent\u tokenize(text)
例如,实际上,只有在负片后面的长度是固定的(这里有两个字符)时,这才有效。我还想检查一下像“med”或“prof”之类的内容。有什么建议吗?
pairs = (("Dr.", "{DR}"), ("Prof.", "{PROF}")) # and some more
def subst_titles(s, reverse=False):
    for x, y in pairs:
        s = s.replace(*(x, y) if not reverse else (y, x))
    return s
>>> text = "Dr. Anna Pytlik is an expert in conservative and aesthetic dentistry. Prof. Miller speaks both English and Polish."
>>> [subst_titles(s, True) for s in subst_titles(text).split(". ")]
['Dr. Anna Pytlik is an expert in conservative and aesthetic dentistry', 'Prof. Miller speaks both English and Polish.']