To pytanie sprawiło, że rozmawiałem z kolegami z pracy o rozbieraniu na 3 minuty. Każdy, kto dołączy do niego w połowie, pomyślałby, że wszyscy pracujemy trochę w nocy.
Whitecat
Odpowiedzi:
1734
Tylko jedna spacja, czy wszystkie kolejne spacje? Jeśli drugi, to łańcuchy mają już .strip()metodę:
>>>' Hello '.strip()'Hello'>>>' Hello'.strip()'Hello'>>>'Bob has a cat'.strip()'Bob has a cat'>>>' Hello '.strip()# ALL consecutive spaces at both ends removed'Hello'
Jeśli jednak chcesz usunąć tylko jedno miejsce, możesz to zrobić za pomocą:
def strip_one_space(s):if s.endswith(" "): s = s[:-1]if s.startswith(" "): s = s[1:]return s
>>> strip_one_space(" Hello ")' Hello'
Pamiętaj też, że str.strip()usuwa również inne znaki spacji (np. Tabulatory i znaki nowej linii). Aby usunąć tylko spacje, możesz określić znak do usunięcia jako argument strip, tj .:
Jeśli potrzebujesz funkcji paska, na przykład funkcji mapy, możesz uzyskać do niej dostęp za pomocą str.strip (), podobnie jak map (str.strip, collection_of_s)
Ward
1
Czy istnieje sposób na przycięcie białych znaków na końcach?
Nikhil Girraj,
2
@killthrush Dzięki za odniesienie, ale myślę, że miałeś na myśli tę rstrip()funkcję. :-)
Nikhil Girraj
14
Czasami wydaje mi się, że python celowo unika dobrze przyjętych i znaczących nazw, których używa ogromna większość języków, aby być „unikatowymi” i „różnymi” - stripzamiast trim, isinstancezamiast instanceof, listzamiast array, itp. Itd. Dlaczego nie użyć imiona, które wszyscy znają ?? geez: P
Gershom
3
@GershomMaes w stripprzypadku całkowicie się zgadzam, ale lista jest zupełnie inna niż tablica.
JFA
262
Jak wskazano w odpowiedziach powyżej
myString.strip()
usunie wszystkie wiodące i końcowe znaki spacji, takie jak \ n, \ r, \ t, \ f, spacja.
Aby uzyskać większą elastyczność, skorzystaj z poniższych
Usuwa tylko wiodące znaki białych znaków:myString.lstrip()
Usuwa tylko końcowe znaki białych znaków:myString.rstrip()
Usuwa szczególnych znaków odstępu: myString.strip('\n')lub myString.lstrip('\n\r')lub myString.rstrip('\n\t')i tak dalej.
Ten post ma tylko kod, nie wyjaśnia, co robi funkcja. Czy usuwa wiodące lub końcowe białe spacje, czy jedno i drugie? Czy usuwa tylko spacje lub wszelkiego rodzaju białe znaki? Czy możesz więc usunąć tylko spacje, czy może jest inna funkcja? Jeśli usuwa zarówno początkowe, jak i końcowe białe spacje, czy możesz sprawić, że usunie tylko jedną z dwóch, czy też jest / czy istnieją inne funkcje do wykonania zadania? myString.strip()nie odpowiada na żadne z zadanych przeze mnie pytań.
EKons,
8
Aby być uczciwym, OP specjalnie poprosił o metodę, która usuwa wiodące i końcowe białe znaki z łańcucha. Wystarczająco dobra odpowiedź dla mnie
Denis Lins,
21
Chcesz strip ():
myphrases =[" Hello "," Hello","Hello ","Bob has a cat"]for phrase in myphrases:print phrase.strip()
Chciałem usunąć zbyt wiele spacji w ciągu znaków (również między ciągami, nie tylko na początku lub na końcu). Zrobiłem to, ponieważ nie wiem, jak to zrobić inaczej:
Jeśli chcesz przyciąć określoną liczbę spacji z lewej i prawej strony , możesz to zrobić:
def remove_outer_spaces(text, num_of_leading, num_of_trailing):
text = list(text)for i in range(num_of_leading):if text[i]==" ":
text[i]=""else:breakfor i in range(1, num_of_trailing+1):if text[-i]==" ":
text[-i]=""else:breakreturn''.join(text)
txt1 =" MY name is "print(remove_outer_spaces(txt1,1,1))# result is: " MY name is "print(remove_outer_spaces(txt1,2,3))# result is: " MY name is "print(remove_outer_spaces(txt1,6,8))# result is: "MY name is"
Jak usunąć wiodące i końcowe białe znaki z łańcucha w Pythonie?
Dlatego poniższe rozwiązanie usunie wiodące i końcowe białe spacje, a także pośrednie białe spacje. Na przykład, jeśli chcesz uzyskać czyste wartości ciągu bez wielu białych znaków.
>>> str_1 =' Hello World'>>>print(' '.join(str_1.split()))HelloWorld>>>>>>>>> str_2 =' Hello World'>>>print(' '.join(str_2.split()))HelloWorld>>>>>>>>> str_3 ='Hello World '>>>print(' '.join(str_3.split()))HelloWorld>>>>>>>>> str_4 ='Hello World '>>>print(' '.join(str_4.split()))HelloWorld>>>>>>>>> str_5 =' Hello World '>>>print(' '.join(str_5.split()))HelloWorld>>>>>>>>> str_6 =' Hello World '>>>print(' '.join(str_6.split()))HelloWorld>>>>>>>>> str_7 ='Hello World'>>>print(' '.join(str_7.split()))HelloWorld
Jak widać, spowoduje to usunięcie wielu białych znaków w ciągu (dane wyjściowe są Hello Worlddla wszystkich). Lokalizacja nie ma znaczenia. Ale jeśli naprawdę potrzebujesz wiodących i końcowych białych znaków, to strip()znajdziesz.
Odpowiedzi:
Tylko jedna spacja, czy wszystkie kolejne spacje? Jeśli drugi, to łańcuchy mają już
.strip()
metodę:Jeśli jednak chcesz usunąć tylko jedno miejsce, możesz to zrobić za pomocą:
Pamiętaj też, że
str.strip()
usuwa również inne znaki spacji (np. Tabulatory i znaki nowej linii). Aby usunąć tylko spacje, możesz określić znak do usunięcia jako argumentstrip
, tj .:źródło
rstrip()
funkcję. :-)strip
zamiasttrim
,isinstance
zamiastinstanceof
,list
zamiastarray
, itp. Itd. Dlaczego nie użyć imiona, które wszyscy znają ?? geez: Pstrip
przypadku całkowicie się zgadzam, ale lista jest zupełnie inna niż tablica.Jak wskazano w odpowiedziach powyżej
usunie wszystkie wiodące i końcowe znaki spacji, takie jak \ n, \ r, \ t, \ f, spacja.
Aby uzyskać większą elastyczność, skorzystaj z poniższych
myString.lstrip()
myString.rstrip()
myString.strip('\n')
lubmyString.lstrip('\n\r')
lubmyString.rstrip('\n\t')
i tak dalej.Więcej informacji jest dostępnych w dokumentach
źródło
strip
nie ogranicza się do białych znaków:źródło
Spowoduje to usunięcie wszystkich wiodących i końcowych białych znaków w
myString
:źródło
myString.strip()
nie odpowiada na żadne z zadanych przeze mnie pytań.Chcesz strip ():
źródło
Chciałem usunąć zbyt wiele spacji w ciągu znaków (również między ciągami, nie tylko na początku lub na końcu). Zrobiłem to, ponieważ nie wiem, jak to zrobić inaczej:
Zastępuje to podwójne spacje w jednym miejscu, dopóki nie będzie już żadnych spacji
źródło
Nie mogłem znaleźć rozwiązania tego, czego szukałem, więc stworzyłem niestandardowe funkcje. Możesz je wypróbować.
źródło
Jeśli chcesz przyciąć określoną liczbę spacji z lewej i prawej strony , możesz to zrobić:
źródło
Można to również zrobić za pomocą wyrażenia regularnego
źródło
Dlatego poniższe rozwiązanie usunie wiodące i końcowe białe spacje, a także pośrednie białe spacje. Na przykład, jeśli chcesz uzyskać czyste wartości ciągu bez wielu białych znaków.
Jak widać, spowoduje to usunięcie wielu białych znaków w ciągu (dane wyjściowe są
Hello World
dla wszystkich). Lokalizacja nie ma znaczenia. Ale jeśli naprawdę potrzebujesz wiodących i końcowych białych znaków, tostrip()
znajdziesz.źródło