我想不出如何用<,>符号来分割这行:
"<c#><winforms><type-conversion><decimal><opacity>"我想从上面的代码行中获得以下列表:
['c#', 'winforms', 'type-conversion', 'decimal', 'opacity']到目前为止,我尝试的是re.split,但没有成功:
>>> re.split("<(\w+?)>", "<c#><winforms><type-conversion><decimal><opacity>")
['<c#>', 'winforms', '<type-conversion>', 'decimal', '', 'opacity', '']提前感谢!
发布于 2016-05-26 00:04:54
如果我们对输入字符串的一些假设是正确的,我们可能可以一起避免正则表达式。我的假设是“列”是遵循以下格式的xml转义字符串:<col1><col2>...<coln>。如果是这样,那么我们真的不需要< (所以让我们删除它),我们可以在>上拆分。
>>> s = "<c#><winforms><type-conversion><decimal><opacity>"
>>> s.replace('<', '').split('>')
['c#', 'winforms', 'type-conversion', 'decimal', 'opacity', '']这只会在列表的末尾留下一个空字符串,但在处理过程中只需跳过,这就很容易切掉或处理。
发布于 2016-05-26 00:01:41
在这种情况下,基于split()或re.split()的解决方案可能是首选,但这里有一种替代的“不要在实践中使用它”的方法,涉及使用HTML解析器:
>>> from bs4 import BeautifulSoup
>>> from HTMLParser import HTMLParser
>>>
>>> s = "<c#><winforms><type-conversion><decimal><opacity>"
>>> [tag.name for tag in BeautifulSoup(HTMLParser().unescape(s), "html.parser").find_all()]
[u'c#', u'winforms', u'type-conversion', u'decimal', u'opacity']发布于 2016-05-26 00:41:48
为什么使用split,它只是使用正则表达式来开始/结束剪切和粘贴。
去掉中间人,会更快。
将findall类型的函数与如下所示的regex一起使用
(如果跨越多行,则设置全部点修饰符)
((?:(?!&[gl]t;).)+)(?:&[gl]t;)*
或者,如果您仍然需要使用拆分,请使用此正则表达式
(?:&[gl]t;)+
https://stackoverflow.com/questions/37442212
复制相似问题