Pato, unganisha, gawanya, futa, na ubadilishe kamba zilizo na laini mpya kwenye Python

Biashara

Ifuatayo inaelezea utendakazi wa kamba zilizo na laini mpya kwenye Python.

  • Unda kamba iliyo na laini mpya, matokeo ya kuchapisha (onyesha)
    • herufi mpya (ama au zote mbili za CR na LF kulingana na mfumo)\n(LF),\r\n(CR+LF)
    • nukuu mara tatu'',"""
    • Ikiwa unataka kupenyeza
  • Unganisha orodha ya mifuatano na mistari mipya
  • Gawanya kamba katika laini mpya na orodha:splitlines()
  • Ondoa na ubadilishe misimbo ya mipasho ya laini
  • Chapisha matokeo bila kufuata laini mpya

Unda mfuatano ulio na laini mpya, uchapishe matokeo

herufi mpya (ama au zote mbili za CR na LF kulingana na mfumo)\n(LF),\r\n(CR+LF)

Kuingiza msimbo wa mlisho wa mstari ndani ya mfuatano kutasababisha mstari mpya.

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

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

Misimbo ya mipasho ya laini inaweza kutumika kwa njia zifuatazo. Baadhi ya wahariri hukuruhusu kuchagua msimbo wa kuvunja mstari.

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

nukuu mara tatu'',"""

Ikiwa nukuu tatu zitatumika kuambatanisha kamba, itakuwa ni mfuatano kama ulivyo, ikijumuisha mistari mipya.

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

Ikiwa unataka kupenyeza

Nukuu tatu pia ni nafasi katika mfuatano, kwa hivyo ukijaribu kuandika kwa uzuri kwa msimbo na ujongezaji kama inavyoonyeshwa hapa chini, nafasi zisizo za lazima zitawekwa.

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

Kwa kutumia backslash kupuuza laini mpya kwenye nambari na kuifanya kuwa mstari wa muendelezo, inaweza kuandikwa kama ifuatavyo.

Funga kila mstari kwa ” au “” na uongeze herufi mpya ←n mwishoni mwa sentensi.

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

Hapa, syntax ni kwamba maandishi ya kamba mfululizo yameunganishwa. Tazama makala ifuatayo kwa maelezo zaidi.

Ikiwa ungependa kuongeza ujongezaji kwenye mfuatano, ongeza tu nafasi kwenye safu katika kila mstari.

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

Kwa kuongeza, kwa kuwa mapumziko ya mstari yanaweza kufanywa kwa uhuru katika mabano, zifuatazo zinaweza kuandikwa kwa kutumia mabano badala ya kurudi nyuma.

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

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

Ikiwa unataka tu kupangilia mwanzo wa mstari, ongeza tu kurudi nyuma kwa mstari wa kwanza wa nukuu tatu.

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

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

Unganisha orodha ya mifuatano na mistari mipya

Njia ya mfuatano join() inaweza kutumika kuambatanisha orodha ya mifuatano kwenye mfuatano mmoja.

Wakati join() inaitwa kutoka kwa herufi mpya, kila kipengee cha kamba kinaunganishwa na laini mpya.

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'

Kama ilivyo kwenye mfano hapo juu, kazi iliyojengewa ndani repr() inaweza kutumika kuangalia mifuatano ambayo ina misimbo mipya kama ilivyo.

Gawanya kamba katika laini mpya na orodha:splitlines()

Njia ya kamba splitlines() inaweza kutumika kugawanya kamba katika orodha ya mistari mipya.

splitlines() itagawanya misimbo yoyote kati ya zifuatazo za kuvunja mstari. Vichupo vya wima na nafasi za kurasa pia zimegawanywa.

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

Ondoa na ubadilishe misimbo ya mipasho ya laini

Kwa kuchanganya splitlines() na join(), inawezekana kuondoa (kuondoa) misimbo ya laini mpya kutoka kwa mfuatano ulio na mistari mipya au kuzibadilisha na mifuatano mingine.

s = 'Line1\nLine2\r\nLine3'

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

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

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

Mabadiliko ya kundi la misimbo ya mipasho ya laini pia inawezekana. Hata kama misimbo ya kuvunja mstari imechanganywa au haijulikani, inaweza kugawanywa kwa kutumia splitlines() na kisha kuunganishwa na msimbo wa kuvunja mstari unaotaka.

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

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

Kama ilivyotajwa hapo juu, splitlines() itagawanya nambari mpya ya laini, kwa hivyo hakuna haja ya kuwa na wasiwasi juu ya nambari mpya katika kesi ya njia ya kuchanganya splitlines() na join().

Ikiwa nambari ya laini mpya iko wazi, inaweza pia kubadilishwa na njia ya replace(), ambayo inachukua nafasi ya kamba.

s = 'Line1\nLine2\nLine3'

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

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

Kumbuka, hata hivyo, kwamba haitafanya kazi ikiwa ina misimbo tofauti ya mipasho ya laini kuliko inavyotarajiwa.

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'

Inawezekana kubadilisha misimbo mingi ya laini mpya kwa kurudia replace(), lakini haitafanya kazi ikiwa agizo si sahihi kwa sababu “\r\n” ina “\n”. Mbinu ya kuchanganya splitlines() na join() iliyofafanuliwa hapo juu ni salama zaidi kwa sababu hakuna haja ya kuwa na wasiwasi kuhusu misimbo ya mipasho ya laini.

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

Tumia mbinu ya rstrip() kuondoa misimbo ya mipasho ya mstari mwishoni mwa sentensi. rstrip() ni njia ya kuondoa herufi za nafasi nyeupe (pamoja na milisho ya mstari) kwenye ncha ya kulia ya kamba.

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

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

Chapisha matokeo bila kufuata laini mpya

Chapisha() chaguo za kukokotoa huongeza laini mpya inayofuata kwa chaguo-msingi. Kwa hivyo, ikiwa print() itatekelezwa kwa mfululizo, kila matokeo yataonyeshwa kwenye mstari mpya.

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

Hii ni kwa sababu thamani chaguo-msingi ya mwisho wa hoja ya print(), ambayo inabainisha mfuatano wa kuongezwa mwishoni, ni alama ya mstari mpya.

Ikiwa hutaki mstari mpya mwishoni, weka tu mwisho wa hoja kwa kamba tupu, na matokeo yatatoka bila laini mpya mwishoni.

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

Mwisho wa hoja unaweza kuwa kamba yoyote.

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

Walakini, ikiwa unataka kubatilisha mifuatano kwa matokeo, ni rahisi kubatilisha mifuatano ya asili kuliko kuzibainisha katika hoja ya mwisho ya print(). Tazama makala ifuatayo.