Têlên ku di Python-ê de xetên nû vedihewînin derdixin, bi hev ve dikin, perçe dikin, jêbirin û biguhezînin

Dikan

Ya jêrîn xebata rêzikên ku di Python de xetên nû vedihewîne vedibêje.

  • Rêzek ku xetên nû vedihewîne biafirîne, derana çapê (nîşandan)
    • karaktera nû (li gorî pergalê CR û LF an jî her du jî)\n(LF),\r\n(CR+LF)
    • quote sêqat'',"""
    • Heke hûn dixwazin bihêlin
  • Lîsteya rêzan bi xetên nû ve girêbide
  • Xalê li xetên nû û navnîşê veqetînin:splitlines()
  • Kodên xwarina rêzê rakin û biguhezînin
  • Hilbera çapkirinê bêyî xêza nû ya paşîn

Rêzek ku xetên nû vedihewîne biafirîne, hilberîna çap bike

karaktera nû (li gorî pergalê CR û LF an jî her du jî)\n(LF),\r\n(CR+LF)

Çêkirina kodek xwarinê ya rêzê di nav rêzek de dê bibe encamek nû.

s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3

s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3

Kodên xwarina rêzê dikarin bi awayên jêrîn werin bikar anîn. Hin edîtor dihêlin hûn kodek veqetandina rêzê hilbijêrin.

Macを含むUnix系\n(LF)
Windows系\r\n(CR+LF)

quote sêqat'',"""

Ger ji bo pêvekirina rêzikê sêqatên sêalî werin bikar anîn, ew ê wekî rêzek be, tevî xetên nû.

s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3

Heke hûn dixwazin bihêlin

Çîrokên sêalî jî di rêzekê de cîh in, ji ber vê yekê heke hûn hewl bidin ku wekî ku li jêr tê xuyang kirin bi rengek xweş bi kod û xêzkirinê binivîsin, dê cîhên nepêwist werin danîn.

s = '''
    Line1
    Line2
    Line3
    '''
print(s)
# 
#     Line1
#     Line2
#     Line3
#     

Bi karanîna paşkêşkek ji bo guhnedana xêzên nû yên di kodê de û çêkirina wê xêzek domdar, dikare wekî jêrîn were nivîsandin.

Her rêzekê bi ” an “”yê ve girêbide û li dawiya hevokê karaktereke nû ←n lê zêde bike.

s = 'Line1\n'\
    'Line2\n'\
    'Line3'
print(s)
# Line1
# Line2
# Line3

Li vir, hevoksazî ev e ku rêzikên rêzikan ên li pey hev têne hev kirin. Ji bo hûragahiyan li gotara jêrîn binêre.

Heger tu dixwazî ​​di rêzekê de derbekê lê zêde bikî, tenê di her rêzekê de valahiyek lê zêde bike.

s = 'Line1\n'\
    '    Line2\n'\
    '        Line3'
print(s)
# Line1
#     Line2
#         Line3

Wekî din, ji ber ku veqetandina rêzan bi serbestî di nav kevanan de têne çêkirin, jêrîn dikare li şûna paşkêşan bi karanîna parantezê were nivîsandin.

s = ('Line1\n'
     'Line2\n'
     'Line3')
print(s)
# Line1
# Line2
# Line3

s = ('Line1\n'
     '    Line2\n'
     '        Line3')
print(s)
# Line1
#     Line2
#         Line3

Heke hûn tenê dixwazin destpêka xêzekê li hev bikin, tenê paşkêşkek li rêza yekem a quotên sêalî zêde bikin.

s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3

s = '''\
Line1
    Line2
        Line3'''
print(s)
# Line1
#     Line2
#         Line3

Lîsteya rêzan bi xetên nû ve girêbide

Rêbaza rêzê join() dikare were bikar anîn da ku navnîşek rêzikan bi yek rêzikan ve girêbide.

Dema ku join() ji karakterek xêzek nû tê gazî kirin, her hêmanek rêzikê bi xêzek nû ve tê girêdan.

l = ['Line1', 'Line2', 'Line3']

s_n = '\n'.join(l)
print(s_n)
# Line1
# Line2
# Line3

print(repr(s_n))
# 'Line1\nLine2\nLine3'

s_rn = '\r\n'.join(l)
print(s_rn)
# Line1
# Line2
# Line3

print(repr(s_rn))
# 'Line1\r\nLine2\r\nLine3'

Mîna ku di mînaka li jor de, fonksiyona çêkirî ya repr() dikare were bikar anîn da ku rêzikên ku kodên xêza nû wekî wan dihewîne kontrol bikin.

Xalê li xetên nû û navnîşê veqetînin:splitlines()

Rêbaza string splitlines() dikare were bikar anîn da ku rêzek li navnîşek xetên nû veqetîne.

splitlines() dê yek ji kodên veqetandina rêzê yên jêrîn perçe bike. Tebên vertîkal û veqetandina rûpelan jî têne dabeş kirin.

  • \n
  • \r\n
  • \v
  • \f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']

Kodên xwarina rêzê rakin û biguhezînin

Bi berhevkirina splitlines() û join(), mimkun e ku meriv kodên xetên nû ji rêzek ku xetên nû vedihewîne were rakirin (rakirin) an jî rêzikên din biguhezîne.

s = 'Line1\nLine2\r\nLine3'

print(''.join(s.splitlines()))
# Line1Line2Line3

print(' '.join(s.splitlines()))
# Line1 Line2 Line3

print(','.join(s.splitlines()))
# Line1,Line2,Line3

Guhertina hevî ya kodên feed line jî gengaz e. Her çend kodên veqetandina rêzê tevlihev bin an nenas bin jî, ew dikarin bi karanîna splitlines() werin dabeş kirin û dûv re bi koda veqetandina rêzê ya xwestinê ve werin girêdan.

s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3

print(repr(s_n))
# 'Line1\nLine2\nLine3'

Wekî ku li jor hatî behs kirin, splitlines() dê koda xêza nû ji hev veqetîne, ji ber vê yekê ne hewce ye ku meriv bi taybetî li ser kodên xêza nû di mijara rêbaza ku splitlines() û join() li hev dike de bifikire.

Ger koda xeta nû zelal be, ew dikare bi rêbaza şûna()-ê jî were guheztin, ku li şûna rêzikê digire.

s = 'Line1\nLine2\nLine3'

print(s.replace('\n', ''))
# Line1Line2Line3

print(s.replace('\n', ','))
# Line1,Line2,Line3

Lêbelê, bala xwe bidin ku ew ê nexebite heke ew ji ya ku tê hêvî kirin kodên feed rêzê yên cûda hebin.

s = 'Line1\nLine2\r\nLine3'

s_error = s.replace('\n', ',')
print(s_error)
# ,Line3Line2

print(repr(s_error))
# 'Line1,Line2\r,Line3'

s_error = s.replace('\r\n', ',')
print(s_error)
# Line1
# Line2,Line3

print(repr(s_error))
# 'Line1\nLine2,Line3'

Mimkûn e ku bi dubarekirina şûna () çend kodên xêzên nû werin guheztin, lê heke rêzik xelet be ew ê nexebite ji ber ku “\r\n” “\n” dihewîne. Rêbaza hevberdana splitlines() û join() ku li jor hatî destnîşan kirin ewletir e ji ber ku ne hewce ye ku meriv li ser kodên xwarina rêzê xeman bike.

s = 'Line1\nLine2\r\nLine3'

print(s.replace('\r\n', ',').replace('\n', ','))
# Line1,Line2,Line3

s_error = s.replace('\n', ',').replace('\r\n', ',')
print(s_error)
# ,Line3Line2

print(repr(s_error))
# 'Line1,Line2\r,Line3'

print(','.join(s.splitlines()))
# Line1,Line2,Line3

Rêbaza rstrip() bikar bînin da ku li dawiya hevokê kodên xwarina rêzê jêbirin. rstrip () rêbazek e ku meriv tîpên cîhê spî (tevî xêzikên xêzan) li dawiya rastê ya rêzikê jê dike.

s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb

print(s.rstrip() + 'bbb')
# aaabbb

Hilbera çapkirinê bêyî xêza nû ya paşîn

Fonksiyona çapkirinê () ji hêla xwerû ve xêzek nû ya paşîn lê zêde dike. Ji ber vê yekê, heke çap () li pey hev were darve kirin, dê her encamek li ser rêzek nû were xuyang kirin.

print('a')
print('b')
print('c')
# a
# b
# c

Ev e ji ber ku nirxa xwerû ya argumana dawiya çapê(), ku rêzika ku li dawiyê were zêdekirin diyar dike, sembola xeta nû ye.

Heke hûn di dawiyê de xêzek nû naxwazin, tenê dawiya argumanê li rêzek vala bicîh bikin, û encam dê di dawiyê de bêyî xetek nû derkeve.

print('a', end='')
print('b', end='')
print('c', end='')
# abc

Dawiya arguman dikare her rêzek be.

print('a', end='-')
print('b', end='-')
print('c')
# a-b-c

Lêbelê, heke hûn dixwazin rêzan ji bo derketinê bidin hev, ji diyarkirina wan di argumana dawî ya çapê(). Gotara jêrîn bibînin.

Copied title and URL