Расщепление строки с помощью регулярных выражений - PullRequest
0 голосов
/ 31 марта 2011

Впервые в Python, и у меня возникли проблемы с получением нужной функции из регулярного выражения.По сути, у меня есть строка, которая выглядит как "Hello, World, Nice", и мне нужно преобразовать ее в список с разделителем ,.Конечный результат должен выглядеть следующим образом: ['Hello', 'World', 'Nice']

re.split(',', string)

В основном полученный результат равен ['Hello', ' World', ' Nice'].Я знаю решение с помощью другого метода, но я хотел бы использовать регулярное выражение.

очень ценится помощь.

Ответы [ 8 ]

3 голосов
/ 31 марта 2011

Ха, другое решение без регулярного выражения:

x="Hello, World, Nice"
[y.strip() for y in x.split(",")]
3 голосов
/ 31 марта 2011

Предполагая, что пробел может быть произвольным, на ум приходят два решения:

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

Я бы пошел с позже. Преимущество, если вы часто разделяете свой код, состоит в том, чтобы пропустить машину регулярных выражений (хотя она не будет суммироваться, пока вы не разделите действительно часто).

0 голосов
/ 31 марта 2011

Немного более надежное решение:

>>> import re
>>> pattern = re.compile(' *, *')
>>> l = "Hello,  World , Nice"
>>> pattern.split(l)
['Hello', 'World', 'Nice']
>>> 
0 голосов
/ 31 марта 2011

попробуйте это регулярное выражение для разделения

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

в регулярном выражении первый - это пробел, а второй - запятая

0 голосов
/ 31 марта 2011

Если у вас нет особых дополнительных требований, вам не нужен модуль re.

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

, если вы действительно настаиваете на re.

>>> re.split('\s*,\s*', "Hello, World, Nice" )
['Hello', 'World', 'Nice']
0 голосов
/ 31 марта 2011
re.split(', ', string)

делает то, что вы хотите.

0 голосов
/ 31 марта 2011
>>> a = "Hello, World, Nice"
>>> a.split(", ")
['Hello', 'World', 'Nice']
>>> 

используя re:

>>> import re
>>> re.split(', ',a)
['Hello', 'World', 'Nice']
>>> 
0 голосов
/ 31 марта 2011

Разделить на ', ', с пробелом

re.split(', ', string)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...