Python-да жаңа жолдарды қамтитын жолдарды шығару, біріктіру, бөлу, жою және ауыстыру

Іскерлік

Төменде Python-да жаңа жолдар бар жолдардың жұмысы сипатталған.

  • Жаңа жолдарды қамтитын жолды жасаңыз, басып шығару шығысы (дисплей)
    • жаңа жол таңбасы (жүйеге байланысты CR және LF екеуі немесе екеуі де)\n(LF),\r\n(CR+LF)
    • үштік цитата'',"""
    • Егер сіз шегініс жасағыңыз келсе
  • Жолдар тізімін жаңа жолдармен байланыстырыңыз
  • Жолды жаңа жолдар мен тізімге бөліңіз:splitlines()
  • Жол беру кодтарын алып тастаңыз және ауыстырыңыз
  • Шығарманы жаңа жолсыз басып шығару

Жаңа жолдарды қамтитын жолды жасаңыз, басып шығарыңыз

жаңа жол таңбасы (жүйеге байланысты CR және LF екеуі немесе екеуі де)\n(LF),\r\n(CR+LF)

Жолдың ішіне жол арнасының кодын кірістіру жаңа жолға әкеледі.

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

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

Жолдық арна кодтарын келесі жолдармен пайдалануға болады. Кейбір өңдегіштер жол үзілімінің кодын таңдауға мүмкіндік береді.

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

үштік цитата'',"""

Егер жолды қоршау үшін үш тырнақша пайдаланылса, ол жаңа жолдарды қоса алғанда, сол күйінде жол болады.

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

Егер сіз шегініс жасағыңыз келсе

Үш тырнақша да жолдағы бос орындар болып табылады, сондықтан кодта ұқыпты жазуға және төменде көрсетілгендей шегініс жасауға тырыссаңыз, қажет емес бос орындар енгізіледі.

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

Кодтағы жаңа жолдарды елемеу және оны жалғастыру жолына айналдыру үшін кері қиғаш сызықты пайдалану арқылы оны келесідей жазуға болады.

Әрбір жолды » немесе «» таңбасымен қоршап, сөйлемнің соңына жаңа жол ←n таңбасын қосыңыз.

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

Мұндағы синтаксис қатардағы жол литералдарын біріктіреді. Мәліметтер алу үшін келесі мақаланы қараңыз.

Жолға шегініс қосқыңыз келсе, әр жолдағы жолға бос орын қосыңыз.

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

Сонымен қатар, жол үзілімдерін жақшада еркін жасауға болатындықтан, төмендегілерді кері қиғаш сызықтардың орнына жақшаның көмегімен жазуға болады.

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

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

Егер сіз жай ғана жолдың басын туралағыңыз келсе, үштік тырнақшалардың бірінші жолына кері қиғаш сызықты қосыңыз.

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

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

Жолдар тізімін жаңа жолдармен байланыстырыңыз

Жолдар тізімін бір жолға біріктіру үшін join() жол әдісін пайдалануға болады.

join() жаңа жол таңбасынан шақырылғанда, әрбір жол элементі жаңа жолмен біріктіріледі.

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'

Жоғарыдағы мысалдағыдай, кірістірілген repr() функциясы жаңа жол кодтары бар жолдарды сол күйінде тексеру үшін пайдаланылуы мүмкін.

Жолды жаңа жолдар мен тізімге бөліңіз:splitlines()

Жолды жаңа жолдар тізіміне бөлу үшін splitlines() жол әдісін пайдалануға болады.

splitlines() келесі жол үзу кодтарының кез келгенін бөледі. Тік қойындылар мен бет үзілімдері де бөлінген.

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

Жол беру кодтарын алып тастаңыз және ауыстырыңыз

Splitlines() және join() біріктіру арқылы жаңа жолдарды қамтитын жолдан жаңа жол кодтарын жоюға (жоюға) немесе оларды басқа жолдармен ауыстыруға болады.

s = 'Line1\nLine2\r\nLine3'

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

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

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

Жолдық арна кодтарын пакеттік өзгерту де мүмкін. Жол үзілімінің кодтары аралас немесе белгісіз болса да, оларды splitlines() арқылы бөлуге болады, содан кейін қажетті жол үзу кодымен біріктіруге болады.

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

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

Жоғарыда айтылғандай, splitlines() жаңа жол кодын бөледі, сондықтан splitlines() және join() біріктіретін әдіс жағдайында жаңа жол кодтары туралы ерекше алаңдаудың қажеті жоқ.

Жаңа жол коды анық болса, оны жолды ауыстыратын replace() әдісімен де ауыстыруға болады.

s = 'Line1\nLine2\nLine3'

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

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

Дегенмен, ол күтілгеннен басқа жол беру кодтары болса, ол жұмыс істемейтінін ескеріңіз.

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'

Бірнеше жаңа жол кодтарын ауыстыру() қайталау арқылы ауыстыруға болады, бірақ тапсырыс қате болса, ол жұмыс істемейді, себебі «\r\n» құрамында «\n» бар. Жоғарыда сипатталған splitlines() және join() біріктіретін әдіс қауіпсізрек, себебі сызық беру кодтары туралы алаңдаудың қажеті жоқ.

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

Сөйлем соңындағы жол беру кодтарын жою үшін rstrip() әдісін пайдаланыңыз. rstrip() — жолдың оң жағындағы бос орын таңбаларын (жол арналарын қоса) жою әдісі.

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

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

Шығарманы жаңа жолсыз басып шығару

print() функциясы әдепкі бойынша кейінгі жаңа жолды қосады. Сондықтан, егер print() ретімен орындалса, әрбір шығыс нәтижесі жаңа жолда көрсетіледі.

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

Себебі соңына қосылатын жолды көрсететін print() end аргументінің әдепкі мәні жаңа жол символы болып табылады.

Соңында жаңа жолды қаламасаңыз, аргументтің соңын бос жолға орнатыңыз, сонда нәтиже соңында жаңа жолсыз шығарылады.

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

Аргументтің соңы кез келген жол болуы мүмкін.

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

Дегенмен, шығару үшін жолдарды біріктіргіңіз келсе, оларды print() соңғы аргументінде көрсетуден гөрі бастапқы жолдарды біріктіру оңайырақ. Келесі мақаланы қараңыз.