Cum se utilizează line.rstrip() în Python? (Programare, Python)

Shiyu Lian a intrebat.

Încerc să citesc un fișier folosind Python.This fișierul meu test.txt:

Hello World
My name is Will
What's your name?

Acesta este codul meu python:

fhand = open('test.txt')
for line in fhand:
    line.rstrip()
    print line

Nu contează dacă folosesc line.rstrip(), Ieșirea este întotdeauna după cum urmează:

Hello World

My name is Will

What's your name?

Cum pot ieși fără linia goală folosind rstrip() în felul următor?

Hello World
My name is Will
What's your name?

3 răspunsuri
Sven Hakvoort

line.rstrip() nu modifică vechea variabilă, ci returnează valoarea dezbrăcată a vechii variabile și trebuie să o realoci pentru ca modificarea să aibă efect, de exemplu:

line = line.rstrip()

În caz contrar, linia nu este schimbată și folosește linia veche în loc de cea dezbrăcată.

Ahsanul Haque
 line.rstrip()

Aici obțineți într-adevăr șirul dezbrăcat, dar nu stocați valoarea.

Înlocuiți line.rstrip() cu line = line.rstrip()

Să vedem demonstrația:

>>> string = "hello    "
>>> string.rstrip()
'hello'
>>> string
'hello    '
>>> string = string.rstrip()
>>> string
'hello'
>>> 

fips

Șirurile de caractere în python (și în alte limbaje) sunt imuabile, ceea ce înseamnă că, odată create, nu pot fi modificate, deci, în esență, nu pot fi modificate. line.rstrip() creează o nouă instanță de șir de caractere cu conținutul eliminat.

Puteți seta variabila dvs. la acesta înainte de imprimare:

line = line.rstrip()

Același lucru este valabil și pentru alte funcții de șiruri de caractere, de exemplu: strip, minuscule, majuscule etc. și de tăiere, de exemplu: line[1:]

Pentru a afla ce alte tipuri se comportă în acest mod, consultați:: https://en.wikibooks.org/wiki/Python_Programming/Data_Types#Mutable_vs_Immutable_Objects

Tags: