如何用Python3从文本中拆分出复合名词(如Internet of Things)?
如何拆分字符串时保留指定多词短语?
嘿,这个场景我碰到过不少次!普通的split(' ')确实没法识别出你想保留的多词短语,这里有两种实用的方法帮你实现需求:
方法一:正则表达式优先匹配目标短语
利用正则的匹配优先级,先匹配你想要保留的完整短语,再匹配单个单词(包括带标点的结尾词),这样就能精准拆分:
import re x = "IoTTech offers the latest Internet of Things news and strategy." # 正则规则:优先匹配"Internet of Things",否则匹配单个单词(含结尾句号) pattern = r'(Internet of Things|\w+[\.]?)' # 遍历所有匹配项并收集为列表 result = [match.group() for match in re.finditer(pattern, x)] print(result)
运行后就能得到你期望的结果:
['IoTTech', 'offers', 'the', 'latest', 'Internet of Things', 'news', 'and', 'strategy.']
方法二:临时标记替换法(更易读,适合多短语场景)
如果觉得正则有点绕,这个方法思路更直观——先把目标短语替换成一个不含空格的临时标记,拆分后再替换回原短语:
x = "IoTTech offers the latest Internet of Things news and strategy." # 第一步:把要保留的短语换成无空格的临时标记 temp_str = x.replace("Internet of Things", "TEMP_PHRASE") # 第二步:按空格拆分字符串 split_list = temp_str.split(' ') # 第三步:把临时标记替换回原短语 result = [item.replace("TEMP_PHRASE", "Internet of Things") for item in split_list] print(result)
这个方法的好处是扩展性强,如果之后要保留多个多词短语(比如"Artificial Intelligence"),只需要多做几次替换就行,维护起来更简单。
内容的提问来源于stack exchange,提问作者user9870883
相关产品推荐
相关产品推荐

