Remover espaços à esquerda e à direita?

110

Estou tendo dificuldade em tentar usar .strip com a seguinte linha de código.

Obrigado pela ajuda.

f.write(re.split("Tech ID:|Name:|Account #:",line)[-1])
fpena06
fonte
3
O que é linha? Um exemplo seria ótimo ou estamos apenas adivinhando.
Jamylak
f.write (str (re.split ("ID técnico: | Nome: | Nº da conta:", linha) [- 1]). strip)
fpena06
1
Pelo código que você acabou de postar, parece que você esqueceu o parêntese após a tira
Jamylak
Você perdeu os parênteses da chamada de função depois strip. Você quer: f.write(str(re.split("Tech ID:|Name:|Account #:",line)[-1]).strip()).
Li-aung Yip
1
Por que você simplesmente não adiciona espaços em branco à sua expressão regular: re.split(r"\s*(?:Tech ID:|Name:|Account #:)\s*etc.
georg

Respostas:

236

Você pode usar a faixa () para remover espaços à direita e à esquerda.

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

Nota: os espaços internos são preservados

Anshuma
fonte
31
Não se esqueça de atribuir a saída de s.strip () de volta a s se esse for seu objetivo: s = s.strip ()
Seanonymous
@GregSchmit Como alguém poderia perder isso? 78 curtidas e ninguém percebeu? Estranho.
MYGz
@MYGz Sim, eu estava até me questionando, pensando que poderia ter perdido alguma coisa.
Greg Schmit
2
@GregSchmit Aparentemente, 89294 olhos o escanearam. Você tem 1 par afiado: P
MYGz
Obviamente, estou fazendo algo errado, mas não sei o que é. Quando executo strip () em uma string, obtenho uma lista de strings, não uma string.
user1928764
5

Expanda seu forro em várias linhas. Então fica fácil:

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
fonte
3

Deve-se observar que o strip()método cortaria quaisquer caracteres de espaço em branco à esquerda e à direita da string (se não houver nenhum argumento passado). Se você quiser cortar o (s) caractere (s) de espaço, enquanto mantém os outros (como nova linha), esta resposta pode ser útil:

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

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

strip([chars]): Você pode passar caracteres opcionais para o strip([chars])método. Python irá procurar por ocorrências desses caracteres e cortar a string fornecida de acordo.

inverted_index
fonte
0

Arquivo inicial:

     line 1
   line 2
line 3  
      line 4 

Código:

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

Resultado:

line 1
line 2
line 3
line 4
Joshua Hall
fonte