首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中拆分带有多个单词分隔符的字符串?

如何在Python中拆分带有多个单词分隔符的字符串?
EN

Stack Overflow用户
提问于 2019-05-09 22:53:00
回答 1查看 585关注 0票数 0

我想要一种使用单词列表作为分隔符来拆分字符串列表的有效方法。输出是另一个字符串列表。

我在一行中尝试了多个.split,但没有成功,因为第一个.split返回一个列表,而随后的.split需要一个字符串。

以下是输入:

代码语言:javascript
复制
words = ["hello my name is jolloopp", "my jolloopp name is hello"]
splitters = ['my', 'is']

我希望输出是

代码语言:javascript
复制
final_list = ["hello ", " name ", " jolloopp", " jolloopp name ", " hello"]

注意空格。

也可以拥有像这样的东西

代码语言:javascript
复制
draft_list = [["hello ", " name ", " jolloopp"], [" jolloopp name ", " hello"]]

可以使用类似于numpy reshape(-1,1)的方法将其展平以获得final_list,但理想的情况是

代码语言:javascript
复制
ideal_list = ["hello", "name", "jolloopp", "jolloopp name", "hello"]

其中的空格已被剥离,这类似于使用.strip()

编辑1:

如果单词分隔符是其他单词的一部分,则使用re.split不能完全正常工作。

代码语言:javascript
复制
words = ["hellois my name is myjolloopp", "my isjolloopp name is myhello"]
splitters = ['my', 'is']

那么输出结果将是

代码语言:javascript
复制
['hello', '', 'name', '', 'jolloopp', '', 'jolloopp name', '', 'hello']

它应该在什么时候

代码语言:javascript
复制
['hellois', 'name', 'myjolloopp', 'isjolloopp name', 'myhello']

这是使用re.split的解决方案的已知问题。

编辑2:

代码语言:javascript
复制
[x.strip() for x in re.split(' | '.join(splitters), ''.join(words))]

当输入为

代码语言:javascript
复制
words = ["hello world", "hello my name is jolloopp", "my jolloopp name is hello"]

输出结果为

代码语言:javascript
复制
['hello worldhello', 'name', 'jolloopp', 'jolloopp name', 'hello']

当输出应该是

代码语言:javascript
复制
['hello world', 'hello', 'name', 'jolloopp', 'jolloopp name', 'hello']
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-09 22:54:57

你可以像这样使用re

使用@pault建议的更好的方式更新,使用单词边界\b而不是:space:

代码语言:javascript
复制
>>> import re
>>> words = ['hello world', 'hello my name is jolloopp', 'my jolloopp name is hello']

# Iterate over the list of words and then use the `re` to split the strings,
>>> [z for y in (re.split('|'.join(r'\b{}\b'.format(x) for x in splitters), word) for word in words) for z in y]
['hello world', 'hello ', ' name ', ' jolloopp', '', ' jolloopp name ', ' hello']
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56062170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档