2012-06-15 5 views
1

У меня есть следующая строка:Простые регулярные выражения расколоть

string = "Peter Pan, Pete Sampras; Little Pete" 

И мне нужно разделить его по имени:

split_string = ["Peter Pan", "Pete Sampras", "Little Pete"] 

Я пытаюсь использовать re.findall, но меня немного неприятностей с это:

print re.findall(r'[,;]', string) 
[";", ";", ";"] 

что я здесь делаю неправильно и как бы я правильно использовать re.findall здесь о r эквивалент разбить строку?

ответ

2

Использование re.split следующим образом разделит вашу строку:

string = "Peter Pan, Pete Sampras; Little Pete" 
print re.split(r'[,;]', string) 
["Peter Pan", "Pete Sampras", "Little Pete"] 
+3

re.split (r '\ s * [,;] \ s *', string) также разделит пробелы. – Oren

+0

Кроме того, я бы избегал использовать имя «строка» в качестве переменной просто потому, что он находится в стандартной библиотеке ... – mgilson

1

В качестве альтернативы, если вы не уверены в сепараторах, но уверены, что об именах, имеющих место (или более) между ними, вы могли бы использование:

re.findall("\w+\s+\w+", target_string) 

Это означает, что имена только одно слово пропущено, так как \w стендами для письма и \s для пробелов и + указывает жадный поиск одного или более эл ements.

Смежные вопросы