分割由特殊字符包围的字符串

时间:2014-09-04 18:35:59

标签: python regex list split

我的输入如下所示。

word1-word2
word1 word2
word1+word2
--word1--word2-
word1-word2 
word1,word2,
(word1),word2

我必须创建一个最终有['word1','word2']的列表 而且没有别的东西。 (它可能有空白,我可以稍后删除)。这两个词周围可以有任何特殊字符。有没有直接的方法呢? (一个更好的正则表达式??)。

我正在通过以下链接尝试以下几行

Splitting a string with multiple delimiters in Python

re.split(r'[-+ ,]+', INPUT)

两个单词周围的特殊字符之间没有任何一致性。

1 个答案:

答案 0 :(得分:3)

听起来你真正想要做的就是从可能包含特殊字符的字符串中提取单词。所以只需查找单词:

re.findall(r'\w+', text)

>>> re.findall(r'\w+', "word1,word2,")
['word1', 'word2']
>>> re.findall(r'\w+', "(word1),word2")
['word1', 'word2']
>>> re.findall(r'\w+', "--word1--word2-")
['word1', 'word2']

re.findall将创建正则表达式匹配列表。

正则表达式中的

\w是所有字母数字字符以及下划线(相当于[a-zA-Z0-9_])的特殊简写。因此,对此解决方案的一个警告是,如果您有类似word1_word2的内容,那么您将获得['word1_word2']

如果不需要,请使用以下正则表达式:[a-zA-Z0-9]+