2011-11-10 18 views
14

że mam następujący ciąg:Python podzielonego ciąg z wielu znaków separatora

"Hello there. My name is Fred. I am 25.5 years old." 

chcę podzielić to na zdania, tak, że mam następującą listę:

["Hello there", "My name is Fred", "I am 25.5 years old"] 

Jak widać, chcę podzielić ciąg na wszystkie wystąpienia ciągu ". ", a nie wystąpienia ani "." ani " ". Python's str.split() nie będzie działał w tym przypadku, ponieważ traktuje każdy znak ciągu jako osobny deliminator, a nie cały ciąg jako wielobitowy deliminator. Czy istnieje prosty sposób na rozwiązanie tego problemu?

Dzięki

EDIT

Głupi ja. Split działa w ten sposób.

+2

'split' nie zachowuje się jak' strip' w tym względzie. –

Odpowiedz

32

działa na mnie

>>> "Hello there. My name is Fr.ed. I am 25.5 years old.".split(". ") 
['Hello there', 'My name is Fr.ed', 'I am 25.5 years old.'] 
+1

To lepsze rozwiązanie niż używanie wyrażeń regularnych! – varunl

4
>>> "Hello there. My name is Fred. I am 25.5 years old.".rstrip(".").split(". ") 
['Hello there', 'My name is Fred', 'I am 25.5 years old'] 
2

Można użyć podziału funkcji w regularnych biblioteki ekspresyjnej:

import re 
re.split('\. ', "Hello there. My name is Fred. I am 25.5 years old.") 
+1

Dzięki za alternatywną sugestię. Jest to przydatne, jeśli mam wiele ograniczników. 're.split (r '[\ s ,. | /] +', 'The. \ tbrown fox | skaczący, over/the')' zwraca '['The', 'brown', 'fox', 'skoczył ',' over ',' the '] ' – IceArdor

Powiązane problemy