使用Python拆分段落
我想知道怎么把一整段话分成几段,分得整整齐齐的。比如,下面这段文字:
"目标:估计印度斯利那加政府医学院实习区域成年人中创伤后应激障碍(PTSD)的流行情况。方法:本研究是横断面研究,进行在政府医学院斯利那加的实习区域。选择了三个实习区域的块,这些区域包括不同的村庄。接着通过随机抽样的方法选择了这些村庄的10%,然后再通过系统随机抽样的方法选择了10%的家庭。在选定的家庭中,所有18岁及以上的成年人都被选中,并使用一般健康问卷(GHQ)进行了筛查。筛查出PTSD阳性的患者进行了评估和诊断。从阳性病例的列表中计算了流行率。结果:在总共3400名受试者(年龄≥18岁)中,普通人群中创伤后应激障碍的流行率为3.76%。女性的流行率更高(卡方检验=2.086,p>0.05(不显著))。大多数病例出现在0-40岁的年龄段。大多数病例是未婚、文盲,并且属于低社会经济阶层。亲人去世是主要的创伤事件。急性发作的创伤后应激障碍是最常见的类型,12%的患者有精神病史,22.6%的患者有药物滥用史。结论:我们的研究结果清楚地表明,创伤后应激障碍(PTSD)在发展中国家是一个普遍存在的疾病,尤其是在灾害频发地区和政治动荡的地区。随着时间的推移,克什米尔地区对各种创伤事件的抵抗力逐渐增强,这可能解释了我们研究中创伤后应激障碍(PTSD)较低的流行率。"
我想用Python把这段文字分成几段,像这样:
"目标:估计印度斯利那加政府医学院实习区域成年人中创伤后应激障碍(PTSD)的流行情况。
方法:本研究是横断面研究,进行在政府医学院斯利那加的实习区域。选择了三个实习区域的块,这些区域包括不同的村庄。接着通过随机抽样的方法选择了这些村庄的10%,然后再通过系统随机抽样的方法选择了10%的家庭。在选定的家庭中,所有18岁及以上的成年人都被选中,并使用一般健康问卷(GHQ)进行了筛查。筛查出PTSD阳性的患者进行了评估和诊断。从阳性病例的列表中计算了流行率。
结果:在总共3400名受试者(年龄≥18岁)中,普通人群中创伤后应激障碍的流行率为3.76%。女性的流行率更高(卡方检验=2.086,p>0.05(不显著))。大多数病例出现在0-40岁的年龄段。大多数病例是未婚、文盲,并且属于低社会经济阶层。亲人去世是主要的创伤事件。急性发作的创伤后应激障碍是最常见的类型,12%的患者有精神病史,22.6%的患者有药物滥用史。
结论:我们的研究结果清楚地表明,创伤后应激障碍(PTSD)在发展中国家是一个普遍存在的疾病,尤其是在灾害频发地区和政治动荡的地区。随着时间的推移,克什米尔地区对各种创伤事件的抵抗力逐渐增强,这可能解释了我们研究中创伤后应激障碍(PTSD)较低的流行率。"
最后,我想把每一段存储到一个字符串中,分别对应目标、方法、结果和结论。我该怎么做呢?
这是我用的代码:
content = repr(content).replace(".", ".\n")
但是这样的话,像22.6%这样的百分比会被分到另一行。
编辑:如果这个字符串属于一个列表中的一个对象,那该怎么办呢?
content = record.get("AB")
content = re.split(r"\B\s(?=[^\s:]+:)", content)
这样可以吗?
1 个回答
你可以在一个非字母字符(比如标点符号)后面跟着空格,然后再跟着一个单词,最后是一个冒号的地方进行分割:
obj, method, result, conclusion = re.split(r"\B\s(?=[^\s:]+:)", subject)
如果恰好有四个符合这些规则的子字符串,这样做是可以的。
不过,看起来用一种更具体的方法可能会更好:
>>> regex = re.compile(r"""Objective:\s(.*?)Methodology:\s(.*?)
... Results:\s(.*?)Conclusion:\s(.*)""", re.S|re.X)
>>> obj, method, result, conclusion = regex.match(subject).groups()
(这里的 subject
是你输入的字符串)。