Usunąć początkowe i końcowe spacje?

110

Mam trudności z użyciem pliku .strip z następującym wierszem kodu.

Dzięki za pomoc.

f.write(re.split("Tech ID:|Name:|Account #:",line)[-1])
fpena06
źródło
3
Co to jest linia? Przykład byłby świetny lub tylko zgadujemy.
jamylak
f.write (str (re.split ("Tech ID: | Name: | Account #:", line) [- 1]). strip)
fpena06
1
Z kodu, który właśnie
wysłałeś,
Brakowało nawiasów wywołujących funkcję strip. Chcesz: f.write(str(re.split("Tech ID:|Name:|Account #:",line)[-1]).strip()).
Li-aung Yip
1
Dlaczego po prostu nie dodasz spacji do wyrażenia regularnego: re.split(r"\s*(?:Tech ID:|Name:|Account #:)\s*itp.
georg

Odpowiedzi:

236

Możesz użyć strip (), aby usunąć końcowe i wiodące spacje.

>>> s = '   abd cde   '
>>> s.strip()
'abd cde'

Uwaga: przestrzenie wewnętrzne są zachowane

Anshuma
źródło
31
Nie zapomnij przypisać wyjścia s.strip () z powrotem do s, jeśli taki jest Twój cel: s = s.strip ()
Seanonymous
@GregSchmit Jak ktokolwiek mógł to przegapić? 78 polubień i nikt nie zauważył? Dziwne.
MYGz
@MYGz Tak, nawet zadawałem sobie pytania, myśląc, że mogłem coś przeoczyć.
Greg Schmit
2
@GregSchmit Najwyraźniej zeskanowało to 89294 oczu. Masz 1 ostrą parę: P
MYGz
Oczywiście robię coś źle, ale nie wiem, co to jest. Kiedy uruchamiam strip () na łańcuchu, otrzymuję z powrotem listę ciągów, a nie łańcuch.
user1928764
5

Rozszerz swoją jedną wkładkę do wielu linii. Wtedy staje się to łatwe:

f.write(re.split("Tech ID:|Name:|Account #:",line)[-1])

parts = re.split("Tech ID:|Name:|Account #:",line)
wanted_part = parts[-1]
wanted_part_stripped = wanted_part.strip()
f.write(wanted_part_stripped)
Li-aung Yip
źródło
3

Należy zauważyć, że strip()metoda obetnie wszelkie początkowe i końcowe białe znaki z ciągu (jeśli nie ma przekazanego argumentu). Jeśli chcesz przyciąć znaki spacji, zachowując pozostałe (takie jak nowa linia), ta odpowiedź może być pomocna:

sample = '  some string\n'
sample_modified = sample.strip(' ')

print(sample_modified)  # will print 'some string\n'

strip([chars]): Możesz przekazać opcjonalne znaki do strip([chars])metody. Python będzie szukał wystąpień tych znaków i odpowiednio przycinał podany ciąg.

inverted_index
źródło
0

Plik początkowy:

     line 1
   line 2
line 3  
      line 4 

Kod:

with open("filename.txt", "r") as f:
    lines = f.readlines()
    for line in lines:
        stripped = line.strip()
        print(stripped)

Wynik:

line 1
line 2
line 3
line 4
Joshua Hall
źródło