Supprimer les espaces de début et de fin?


110

J'ai du mal à utiliser .strip avec la ligne de code suivante.

Merci pour l'aide.

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

3
Qu'est-ce que la ligne? Un exemple serait génial ou nous ne faisons que deviner.
jamylak

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

1
D'après le code que vous venez de publier, il semble que vous ayez oublié la paranthèse après le strip
jamylak

Vous avez manqué les parenthèses d'appel de fonction après strip. Vous voulez: f.write(str(re.split("Tech ID:|Name:|Account #:",line)[-1]).strip()).
Li-aung Yip

1
Pourquoi ne pas ajouter simplement des espaces à votre expression régulière: re.split(r"\s*(?:Tech ID:|Name:|Account #:)\s*etc.
georg

Réponses:


236

Vous pouvez utiliser la bande () pour supprimer les espaces de fin et de début.

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

Remarque: les espaces internes sont préservés


31
N'oubliez pas de renvoyer la sortie de s.strip () à s si c'est votre objectif: s = s.strip ()
Seanonymous

@GregSchmit Comment quelqu'un pourrait-il manquer ça? 78 likes et personne n'a remarqué? Étrange.
MYGz

@MYGz Ouais, je me posais même des questions, pensant que j'avais peut-être manqué quelque chose.
Greg Schmit

2
@GregSchmit Apparemment, 89294 yeux l'ont scanné. Vous avez 1 paire nette: P
MYGz

De toute évidence, je fais quelque chose de mal, mais je ne sais pas ce que c'est. Quand je lance strip () sur une chaîne, je récupère une liste de chaînes, pas une chaîne.
user1928764

5

Développez votre doublure en plusieurs lignes. Ensuite, cela devient facile:

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)

3

Il convient de noter que cette strip()méthode supprime tous les caractères d'espacement de début et de fin de la chaîne (s'il n'y a pas d'argument transmis). Si vous souhaitez réduire le (s) caractère (s) d'espace, tout en conservant les autres (comme une nouvelle ligne), cette réponse peut être utile:

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

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

strip([chars]): Vous pouvez passer des caractères optionnels à la strip([chars])méthode. Python recherchera les occurrences de ces caractères et coupera la chaîne donnée en conséquence.


0

Fichier de départ:

     line 1
   line 2
line 3  
      line 4 

Code:

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

Production:

line 1
line 2
line 3
line 4
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.