cheng wrote: > hi all > a string like > > "(word1 & (Word2|woRd3))" > > how can i use the re to split it to > > ['word1', 'word2', 'word3'] >
OK, so you know about the re module. Look in the manual: there's a module-level function called "split", with an example similar to yours. Did you try that? Let's do it now: >>> import re >>> text = "(word1 & (Word2|woRd3))".lower() # you seem to want downshifting ... >>> re.split(r"\W+", text) ['', 'word1', 'word2', 'word3', ''] >>> Hmmm ... near, but not exactly what you want. We need to throw away those empty strings, which will appear if you have non-word characters at the ends of your text. Two ways of doing that: >>> filter(None, re.split(r"\W+", text)) ['word1', 'word2', 'word3'] or >>> [x for x in re.split(r"\W+", text) if x] ['word1', 'word2', 'word3'] Forget about "filter". Read about "list comprehensions" and "generator expressions" -- they are more general and powerful. Cheers, John -- http://mail.python.org/mailman/listinfo/python-list