Discussion:
string.split po spacji
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Maciej Litwiniuk
2006-01-14 14:23:18 UTC
Permalink
Witam,
przy okazji moich ostatnich zabaw zapragnąłem dzielić tekst, np. po spacji.
No i pojawił się problem przy takiej konstrukcji:
s = "a l a m a"
print s.split(" ")
Co daje w wyniku
['a', 'l', 'a', '', '', 'm', 'a']
zamiast oczekiwanej przeze mnie postaci:
['a', 'l', 'a', '', 'm', 'a']

Zasadniczo chodzi o ładowanie kolejnych znaków z pliku i odpowiednie ich od
siebie oddzielanie - np. spacją właśnie. Pojawia się jednak problem, gdy
jednym ze znaków do zczytania jest właśnie spacja. Jest jakaś animagiczna
metoda, jak to obejść? A, pisanie ciągiem ( :) ) , czy też pickle nie
wchodzą w grę.

Z góry dziękuję za odpowiedź.
Pozdrawiam,
M. Litwiniuk
--
@: maciej na litwiniuk w .net ][ GG#: 243970 ][ JID: ***@chrome.pl
gpg key: http://litwiniuk.net/maciej_litwiniuk.asc
Mateusz Łoskot
2006-01-14 15:15:47 UTC
Permalink
Post by Maciej Litwiniuk
Witam,
przy okazji moich ostatnich zabaw zapragnąłem dzielić tekst, np. po spacji.
s = "a l a m a"
print s.split(" ")
Co daje w wyniku
['a', 'l', 'a', '', '', 'm', 'a']
['a', 'l', 'a', '', 'm', 'a']
Spróbuj tak:

import re
str = "a l a m a"
rex = re.compile(r'\s+')
print rex.split(str)

Pozdrawiam
--
Mateusz Łoskot
http://mateusz.loskot.net
Tupteq
2006-01-16 11:00:02 UTC
Permalink
Post by Maciej Litwiniuk
Witam,
przy okazji moich ostatnich zabaw zapragnąłem dzielić tekst, np. po spacji.
s = "a l a m a"
print s.split(" ")
Co daje w wyniku
['a', 'l', 'a', '', '', 'm', 'a']
['a', 'l', 'a', '', 'm', 'a']
Chodziło Ci o:
['a', 'l', 'a', ' ', 'm', 'a']
?

Jeśli tak, to to się trochę kupy nie trzyma (no chyba, że łykasz tylko
pojedyncze znaki, ale wtedy cały problem nie istnieje), bo pojawiają się
niejednoznaczności, po pierwsze nie ma możliwości zapisania pustego
ciągu, a nawet jeśli takie ciągi nie wchodzą w grę, to nie będziesz mógł
zapisać ciągów złożonych z dwóch lub więcej spacji i kombinacji znaków
ze spacjami. Jeśli znowuż akceptujesz tylko pojedyncze spacje, to bardzo
prosto możesz to wyłapać znajdując potrójne spacje (lub podwójne, jesli
występują na początku lub końcu danych).
Rozważ dodanie eskejpów, albo uściślij czego naprawdę potrzebujesz.
--
Pozdro... Tupteq
Adam Przybyla
2006-01-16 12:09:34 UTC
Permalink
Post by Maciej Litwiniuk
Witam,
przy okazji moich ostatnich zabaw zapragnąłem dzielić tekst, np. po spacji.
s = "a l a m a"
print s.split(" ")
Co daje w wyniku
['a', 'l', 'a', '', '', 'm', 'a']
['a', 'l', 'a', '', 'm', 'a']
Zasadniczo chodzi o ładowanie kolejnych znaków z pliku i odpowiednie ich od
siebie oddzielanie - np. spacją właśnie. Pojawia się jednak problem, gdy
jednym ze znaków do zczytania jest właśnie spacja. Jest jakaś animagiczna
metoda, jak to obejść? A, pisanie ciągiem ( :) ) , czy też pickle nie
wchodzą w grę.
... jezu, a nie mozna po prostu:
s = "a l a m a"
print s.split()
Konbinuaj tu wszyscy jak kon pod gorke;-) Z powazaniem
Adam Przybyla
Tupteq
2006-01-16 14:44:18 UTC
Permalink
Post by Maciej Litwiniuk
s = "a l a m a"
print s.split()
Konbinuaj tu wszyscy jak kon pod gorke;-) Z powazaniem
Myślę, że tow. Maciejowi nie o to chodziło. Starałem się zgłębić jego
problem, ale zanim tego dokonałem, to post mi się skończył (innymi słowy
not enough data).
--
Pozdro... Tupteq
Loading...