Basicamente, estou pedindo ao usuário que insira uma sequência de texto no console, mas a sequência é muito longa e inclui muitas quebras de linha. Como eu pegaria a string do usuário e excluiria todas as quebras de linha para torná-la uma única linha de texto. Meu método para adquirir a string é muito simples.
string = raw_input("Please enter string: ")
Existe uma maneira diferente de pegar a string do usuário? Estou executando o Python 2.7.4 em um Mac.
PS É claro que sou um noob; portanto, mesmo que uma solução não seja a mais eficiente, a que usa a sintaxe mais simples seria apreciada.
strip
remove espaços em branco no início e final de uma string, e não dentro da corda ...Respostas:
Como você insere quebras de linha
raw_input
? Mas, uma vez que você tenha uma string com alguns caracteres dos quais deseja se livrar, apenasreplace
eles.No exemplo acima, substituí todos os espaços. A sequência
'\n'
representa novas linhas. E\r
representa retornos de carro (se você estiver no Windows, poderá obter esses e um segundoreplace
cuidará deles para você!).basicamente:
Observe também que é uma má idéia chamar sua variável
string
, pois isso oculta o módulostring
. Outro nome que eu gostaria de evitar, mas gostariam de usar às vezes:file
. Pela mesma razão.fonte
\r
retornos de carro. Eu tentei todos os métodos para remover,\n
mas ainda não estava capturando os\r
caracteres.string
, mas, por um motivo semelhante, não deseja usar o nome da variávelstr
.\n
mas não possuem\r\n
.Você pode tentar usar a sequência de substituição:
fonte
Você pode dividir a sequência sem o separador arg, que tratará os espaços em branco consecutivos como um único separador (incluindo novas linhas e guias). Em seguida, junte-se usando um espaço:
https://docs.python.org/2/library/stdtypes.html#str.split
fonte
atualizado com base no
Xbello
comentário:leia mais aqui
fonte
rstrip("\r\n")
rstrip('\r\n')
não era suficiente e tinha que ir com:my_string.rstrip('\r\n').replace('\n', ' ')
Outra opção é regex:
fonte
r'[\n\r]+'
ou até mesmor'\s+'
substituir qualquer espaço em branco por um único espaço.Um método que leva em consideração
é preciso uma seqüência de várias linhas que pode ser confusa, por exemplo
e produz uma bela string de uma linha
UPDATE: Para corrigir vários caracteres de nova linha produzindo espaços redundantes:
Isso funciona para o seguinte também
test_str = '\nhej ho \n aaa\r\n\n\n\n\n a\n '
fonte
Se alguém decide usar
replace
, você deve tentarr'\n'
, em vez'\n'
fonte
r
("literal de cadeia de caracteres brutos"). Infelizmente, eu não tenho idéia do porquê)O problema com o rstrip é que ele não funciona em todos os casos (como eu mesmo já vi poucos). Em vez disso, você pode usar - text = text.replace ("\ n", "") isso removerá todas as novas linhas \ n com um espaço.
Agradecemos antecipadamente a vocês por seus votos.
fonte