Výstup, spojenie, rozdelenie, odstránenie a nahradenie reťazcov obsahujúcich nové riadky v jazyku Python

obchodné

Nasledujúci text opisuje prácu s reťazcami obsahujúcimi nové riadky v jazyku Python.

  • Vytvorenie reťazca obsahujúceho nové riadky, tlač výstupu (zobrazenie)
    • znak nového riadku (v závislosti od systému buď CR, alebo LF)\n(LF), \r\n(CR+LF)
    • trojitá citácia''',"""
    • Ak chcete odsadiť
  • spojiť zoznam reťazcov s novými riadkami
  • Rozdelenie reťazca na nové riadky a zoznam:splitlines()
  • Odstránenie a nahradenie kódov podávania riadkov
  • Tlač výstupu bez koncového nového riadku

Vytvorenie reťazca obsahujúceho nové riadky, tlač výstupu

znak nového riadku (v závislosti od systému buď CR, alebo LF) \n(LF), \r\n(CR+LF)

Vložením kódu podávania riadkov do reťazca sa vytvorí nový riadok.

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

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

Kódy podávania riadkov možno použiť nasledujúcimi spôsobmi. Niektoré editory umožňujú vybrať kód zalomenia riadku.

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

trojitá citácia ''',"""

Ak sa na uzavretie reťazca použijú trojité úvodzovky, bude to reťazec ako taký, vrátane nových riadkov.

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

Ak chcete odsadiť

Trojité úvodzovky sú tiež medzery v reťazci, takže ak sa budete snažiť písať úhľadne v kóde a odsadíte ho tak, ako je uvedené nižšie, vložia sa zbytočné medzery.

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

Pomocou spätného lomítka, ktoré ignoruje nové riadky v kóde a robí z neho pokračovací riadok, ho možno zapísať takto

Každý riadok uzavrite znakom „“ alebo „“ a na koniec vety pridajte znak nového riadku ←n.

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

Syntax spočíva v tom, že sa po sebe idúce reťazcové literály spájajú. Podrobnosti nájdete v nasledujúcom článku.

Ak chcete pridať odsadenie v reťazci, stačí pridať medzeru do reťazca v každom riadku.

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

Okrem toho, keďže v zátvorkách možno ľubovoľne vytvárať zlomy riadkov, nasledujúce príkazy možno zapísať pomocou zátvoriek namiesto spätných lomiek.

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

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

Ak chcete len zarovnať začiatok riadku, stačí pridať spätné lomítko na prvý riadok trojitých úvodzoviek.

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

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

spojiť zoznam reťazcov s novými riadkami

Metódu join() možno použiť na spojenie zoznamu reťazcov do jedného reťazca.

Keď sa funkcia join() zavolá zo znaku nového riadku, každý prvok reťazca sa spojí s novým riadkom.

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'

Podobne ako vo vyššie uvedenom príklade, vstavaná funkcia repr() môže byť použitá na kontrolu reťazcov, ktoré obsahujú kódy nového riadku tak, ako sú.

Rozdelenie reťazca na nové riadky a zoznam: splitlines()

Na rozdelenie reťazca na zoznam nových riadkov možno použiť metódu splitlines().

splitlines() rozdelí ktorýkoľvek z nasledujúcich kódov zalomenia riadku. Zvislé tabulátory a zalomenie strany sa tiež rozdelia.

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

Odstránenie a nahradenie kódov podávania riadkov

Kombináciou funkcií splitlines() a join() je možné odstrániť (odstrániť) kódy nových riadkov z reťazca obsahujúceho nové riadky alebo ich nahradiť inými reťazcami.

s = 'Line1\nLine2\r\nLine3'

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

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

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

Dávková zmena kódov podávania riadkov je tiež možná. Aj keď sú kódy zalomenia riadkov zmiešané alebo neznáme, možno ich rozdeliť pomocou funkcie splitlines() a potom spojiť s požadovaným kódom zalomenia riadkov.

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

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

Ako bolo uvedené vyššie, metóda splitlines() rozdelí akýkoľvek kód nového riadku, takže v prípade metódy kombinujúcej splitlines() a join() nie je potrebné sa kódmi nového riadku zvlášť zaoberať.

Ak je kód nového riadku jasný, možno ho nahradiť aj metódou replace(), ktorá nahradí reťazec.

s = 'Line1\nLine2\nLine3'

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

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

Upozorňujeme však, že nebude fungovať, ak bude obsahovať iné kódy podávania riadkov, ako sa očakáva.

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'

Je možné nahradiť viacero kódov nového riadku opakovaním funkcie replace(), ale nebude to fungovať, ak je poradie nesprávne, pretože „\r\n“ obsahuje „\n“. Vyššie opísaná metóda kombinujúca splitlines() a join() je bezpečnejšia, pretože sa netreba starať o kódy riadkovania.

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

Metóda rstrip() slúži na odstránenie kódov riadkového posuvu na konci vety. rstrip() je metóda na odstránenie bielych znakov (vrátane riadkového posuvu) na pravom konci reťazca.

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

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

Tlač výstupu bez koncového nového riadku

Funkcia print() predvolene pridáva koncové nové riadky. Preto ak sa funkcia print() vykoná postupne, každý výstupný výsledok sa zobrazí na novom riadku.

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

Je to preto, že predvolenou hodnotou argumentu end funkcie print(), ktorý určuje reťazec, ktorý sa má pridať na koniec, je symbol nového riadku.

Ak nechcete mať na konci nový riadok, stačí nastaviť argument end na prázdny reťazec a výstup sa vypíše bez nového riadku na konci.

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

Argument end môže byť ľubovoľný reťazec.

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

Ak však chcete spojiť reťazce na výstup, je jednoduchšie spojiť pôvodné reťazce, ako ich uvádzať v koncovom argumente funkcie print(). Pozri nasledujúci článok.

Copied title and URL