使用 Python 正则表达式将字符串除以换行符或句点

Posted

技术标签:

【中文标题】使用 Python 正则表达式将字符串除以换行符或句点【英文标题】:Divide string by line break or period with Python regular expressions 【发布时间】:2013-07-11 04:29:28 【问题描述】:

我有一个字符串:

"""Hello. It's good to meet you.
My name is Bob."""

我正在尝试找到将其拆分为按句点和换行符划分的列表的最佳方法:

["Hello", "It's good to meet you", "My name is Bob"]

我很确定我应该使用正则表达式,但是由于没有使用它们的经验,我正在努力弄清楚如何做到这一点。

【问题讨论】:

【参考方案1】:

你不需要正则表达式。

>>> txt = """Hello. It's good to meet you.
... My name is Bob."""
>>> txt.split('.')
['Hello', " It's good to meet you", '\nMy name is Bob', '']
>>> [x for x in map(str.strip, txt.split('.')) if x]
['Hello', "It's good to meet you", 'My name is Bob']

【讨论】:

【参考方案2】:

对于您的示例,在点上拆分就足够了,可以选择后跟空格(并忽略空结果):

>>> s = """Hello. It's good to meet you.
... My name is Bob."""
>>> import re
>>> re.split(r"\.\s*", s)
['Hello', "It's good to meet you", 'My name is Bob', '']

在现实生活中,您必须处理 Mr. OrangeDr. GreeneGeorge W. Bush,不过......

【讨论】:

【参考方案3】:

你可以使用这个拆分

re.split(r"(?<!^)\s*[.\n]+\s*(?!$)", s)

【讨论】:

【参考方案4】:
>>> s = """Hello. It's good to meet you.
... My name is Bob."""
>>> import re
>>> p = re.compile(r'[^\s\.][^\.\n]+')
>>> p.findall(s)
['Hello', "It's good to meet you", 'My name is Bob']
>>> s = "Hello. #It's good to meet you # .'"
>>> p.findall(s)
['Hello', "#It's good to meet you # "]

【讨论】:

"Hello. #It's good to meet you # .' your regex catch ['Hello', "很高兴认识你#"]``【参考方案5】:

我的:

re.findall('(?=\S)[^.\n]+(?<=\S)',su)

【讨论】:

以上是关于使用 Python 正则表达式将字符串除以换行符或句点的主要内容,如果未能解决你的问题,请参考以下文章

python中的正则表达式

python之正则表达式

Python正则表达式详解

Python 24天 正则表达式

如何在 Python 中使用正则表达式将所有内容匹配到双换行符“\n\n”?

Python3 正则表达式