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])
fpena06
la source
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

Anshuma
la source
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)
Li-aung Yip
la source
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.

inverted_index
la source
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
Salle Joshua
la source