python - 根据一组特定的单词拆分字符串

标签 python regex string

我有一个这样的字符串列表,

['happy_feet', 'happy_hats_for_cats', 'sad_fox_or_mad_banana','sad_pandas_and_happy_cats_for_people'] 

给定一个关键字列表,如 ['for', 'or', 'and'] 我希望能够将该列表解析为另一个列表,如果关键字列表出现在字符串中,将该字符串拆分为多个部分。

例如,上面的集合会被拆分成

['happy_feet', 'happy_hats',  'cats', 'sad_fox', 'mad_banana', 'sad_pandas', 'happy_cats', 'people']

目前我已经用下划线分割了每个内部字符串,并有一个 for 循环来寻找关键字的索引,然后用下划线重新组合字符串。有没有更快的方法来做到这一点?

最佳答案

>>> [re.split(r"_(?:f?or|and)_", s) for s in l]
[['happy_feet'],
 ['happy_hats', 'cats'],
 ['sad_fox', 'mad_banana'],
 ['sad_pandas', 'happy_cats', 'people']]

要将它们组合成一个列表,您可以使用

result = []
for s in l:
    result.extend(re.split(r"_(?:f?or|and)_", s))

关于python - 根据一组特定的单词拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34410358/

相关文章:

android - 如何下载适用于安卓的谷歌源代码

.net - 在循环中从 .NET 调用 Python 太慢了

Python正则表达式,修复数字间距

c - linux kernel convert char * to uint8_t[6] (读字符串到mac)

python - 在 python 终端中打印矩形

c# - 从字符串中提取字符(正则表达式)

php - 正则表达式 : same character 3 times

java - 根据两个字符串的差异创建所有变体

c++ - 为什么不打印 char 数组的单元化索引?

python - 在 Windows 上的 Python 中获取和设置环境变量