Python。使用单词列表中的任何单词拆分字符串

2024-10-17 00:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张单子。在

trails = ("Fire trail", "Firetrail", "Fire Trail", "FT", "firetrail")

我需要根据这些单词拆分另一个字符串。
比如说,如果要检查的名字是:

  • 贫困点FT
  • 雪松派对火线
  • 邮箱跟踪
  • 地毯蛇溪火线
  • 美丽的沟壑火道-罗亚尔NP

我想把它们改成这样:

  • 贫困点
  • 雪松派对
  • 邮箱
  • 地毯蛇溪
  • 美丽的沟壑

在线索列表中的一个单词之前拆分,只复制前面的部分。在

谢谢!在

我要补充的是,我的代码以:

^{pr2}$

str(f[0])引用第一个列表中的名称 新的_字段是指我在我的第二个列表中的名字,我需要创建它


Tags: 列表名字单词fire单子邮箱trailft
3条回答

您可以在此处使用^{}

import re

_list = re.split(r'Fire trail|Firetrail|Fire Trail|FT|firetrail', _string)

好吧,这里有更动态的方法来执行任务

import re

courses = r"""
Poverty Point FT
Cedar Party Fire Trails
Mailbox Trail
Carpet Snake Creek Firetrail
Pretty Gully firetrail - Roayl NP
"""

trails = ("Fire trail", "Firetrail", "Fire Trail", "FT", "firetrail")

rx_str = '|'.join(trails)
rx_str = r"^.+?(?=(?:{0}|$))".format(rx_str)

rx = re.compile(rx_str, re.IGNORECASE | re.MULTILINE)

for course in rx.finditer(courses):
    print(course.group())

正如您所注意到的,我正在动态地将list转换为regex,而不需要硬编码。脚本将呈现以下结果:

^{pr2}$

我相信这就是你要找的。如果您希望它不区分大小写,您还可以添加标志re.IGNORECASE,就像这样res = re.split(regex, s, re.IGNORECASE)。有关更多文档,请参见^{}。在

import re
trails = ("Fire trail", "Firetrail", "Fire Trail", "FT", "firetrail")

# \b means word boundaries.
regex = r"\b(?:{})\b".format("|".join(trails))

s = """Poverty Point FT
Cedar Party Fire Trails
Mailbox Trail
Carpet Snake Creek Firetrail
Pretty Gully firetrail - Roayl NP"""

res = re.split(regex, s)

更新:

如果你一行一行地走,不想走到最后,你可以这样做:

^{pr2}$

相关问题 更多 >