通过正则表达式问题拆分字符串

时间:2011-03-31 07:36:03

标签: python regex string split

python的新手,我无法获得我想要的正则表达式的功能。基本上我有一个看起来像"Hello, World, Nice"的字符串,我需要将其转换为一个分隔符为,的列表。最终结果应如['Hello', 'World', 'Nice']

re.split(',', string)

基本上我得到的结果是 ['Hello', ' World', ' Nice']。 我通过不同的方法知道解决方案,但我想使用正则表达式。

非常感谢。

8 个答案:

答案 0 :(得分:3)

假设空白可以是任意的,可以想到两种解决方案:

re.split(r'\s*,\s*', string)
#          ^- zero or more whitespace incl. tabs and newlines
# the r'' syntax preserves the backslash from being interpreted
# as escape sequence

map(str.strip, string.split(','))
#   ^- apply the 'strip' function (~ 'trim' in other languages) to all matches

我会跟你一起去。如果你经常在你的代码中拆分,那么优势就是跳过正则表达式机器(虽然它不会总结,直到你经常 )。

答案 1 :(得分:3)

哈,另一种没有regexp的解决方案:

x="Hello, World, Nice"
[y.strip() for y in x.split(",")]

答案 2 :(得分:0)

', '上拆分,空格

re.split(', ', string)

答案 3 :(得分:0)

>>> a = "Hello, World, Nice"
>>> a.split(", ")
['Hello', 'World', 'Nice']
>>> 

使用re:

>>> import re
>>> re.split(', ',a)
['Hello', 'World', 'Nice']
>>> 

答案 4 :(得分:0)

re.split(', ', string)

做你想做的事。

答案 5 :(得分:0)

如果您没有特定的高级要求,则根本不需要重新模块。

>>> "Hello, World, Nice".split(",")
['Hello', ' World', ' Nice']
>>> map( str.strip, "Hello, World, Nice".split(",") )
['Hello', 'World', 'Nice']

如果你真的坚持重新。

>>> re.split('\s*,\s*', "Hello, World, Nice" )
['Hello', 'World', 'Nice']

答案 6 :(得分:0)

一个稍微强大的解决方案:

>>> import re
>>> pattern = re.compile(' *, *')
>>> l = "Hello,  World , Nice"
>>> pattern.split(l)
['Hello', 'World', 'Nice']
>>> 

答案 7 :(得分:-1)

尝试使用此正则表达式进行拆分

>>> a = "Hello, World, Nice"
>>> a.split("[ ,\\,]")

在正则表达式中首先是空格,第二个是逗号