首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python re拆分'<&>‘行

使用python re拆分'<&>‘行
EN

Stack Overflow用户
提问于 2016-05-25 23:54:34
回答 4查看 1K关注 0票数 0

我想不出如何用<,>符号来分割这行:

代码语言:javascript
复制
"&lt;c#&gt;&lt;winforms&gt;&lt;type-conversion&gt;&lt;decimal&gt;&lt;opacity&gt;"

我想从上面的代码行中获得以下列表:

代码语言:javascript
复制
['c#', 'winforms', 'type-conversion', 'decimal', 'opacity']

到目前为止,我尝试的是re.split,但没有成功:

代码语言:javascript
复制
>>> re.split("&lt;(\w+?)&gt;", "&lt;c#&gt;&lt;winforms&gt;&lt;type-conversion&gt;&lt;decimal&gt;&lt;opacity&gt;")

['&lt;c#&gt;', 'winforms', '&lt;type-conversion&gt;', 'decimal', '', 'opacity', '']

提前感谢!

EN

回答 4

Stack Overflow用户

发布于 2016-05-26 00:04:54

如果我们对输入字符串的一些假设是正确的,我们可能可以一起避免正则表达式。我的假设是“列”是遵循以下格式的xml转义字符串:<col1><col2>...<coln>。如果是这样,那么我们真的不需要< (所以让我们删除它),我们可以在>上拆分。

代码语言:javascript
复制
>>> s = "&lt;c#&gt;&lt;winforms&gt;&lt;type-conversion&gt;&lt;decimal&gt;&lt;opacity&gt;"
>>> s.replace('&lt;', '').split('&gt;')
['c#', 'winforms', 'type-conversion', 'decimal', 'opacity', '']

这只会在列表的末尾留下一个空字符串,但在处理过程中只需跳过,这就很容易切掉或处理。

票数 2
EN

Stack Overflow用户

发布于 2016-05-26 00:01:41

在这种情况下,基于split()re.split()的解决方案可能是首选,但这里有一种替代的“不要在实践中使用它”的方法,涉及使用HTML解析器:

代码语言:javascript
复制
>>> from bs4 import BeautifulSoup
>>> from HTMLParser import HTMLParser
>>>
>>> s = "&lt;c#&gt;&lt;winforms&gt;&lt;type-conversion&gt;&lt;decimal&gt;&lt;opacity&gt;"
>>> [tag.name for tag in BeautifulSoup(HTMLParser().unescape(s), "html.parser").find_all()]
[u'c#', u'winforms', u'type-conversion', u'decimal', u'opacity']
票数 1
EN

Stack Overflow用户

发布于 2016-05-26 00:41:48

为什么使用split,它只是使用正则表达式来开始/结束剪切和粘贴。

去掉中间人,会更快。

将findall类型的函数与如下所示的regex一起使用

(如果跨越多行,则设置全部点修饰符)

((?:(?!&[gl]t;).)+)(?:&[gl]t;)*

或者,如果您仍然需要使用拆分,请使用此正则表达式

(?:&[gl]t;)+

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37442212

复制
相关文章

相似问题

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