Излаз, спајање, раздвајање, брисање и замена низова који садрже нове редове у Питхон-у

Бусинесс

Следеће описује рад стрингова који садрже нове редове у Питхон-у.

  • Креирајте стринг који садржи нове редове, одштампајте излаз (приказ)
    • знак новог реда (било или оба од ЦР и ЛФ у зависности од система)\n(ЛФ),\r\n(ЦР+ЛФ)
    • троструки цитат'',"""
    • Ако желите да увучете
  • Повежите листу стрингова са новим редовима
  • Поделите стринг на нове редове и листу:splitlines()
  • Уклоните и замените кодове за повлачење линија
  • Штампајте излаз без завршног новог реда

Креирајте стринг који садржи нове редове, штампајте излаз

знак новог реда (било или оба од ЦР и ЛФ у зависности од система)\n(ЛФ),\r\n(ЦР+ЛФ)

Уметање кода за унос реда унутар стринга резултираће новим редом.

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

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

Кодови за извођење линија могу се користити на следеће начине. Неки уређивачи вам омогућавају да изаберете код за прелом реда.

Macを含むUnix系\n(ЛФ)
Windows系\r\n(ЦР+ЛФ)

троструки цитат'',"""

Ако се троструки наводники користе за затварање стринга, то ће бити стринг какав јесте, укључујући нове редове.

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

Ако желите да увучете

Троструки наводници су такође размаци у низу, тако да ако покушате да уредно пишете у коду и увлачењу као што је приказано испод, непотребни размаци ће бити уметнути.

s = '''
    Line1
    Line2
    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\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

Повежите листу стрингова са новим редовима

Метода стрингова јоин() се може користити за спајање листе стрингова у један стринг.

Када се јоин() позове из знака новог реда, сваки елемент стринга је спојен са новим редом.

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'

Као у горњем примеру, уграђена функција репр() може се користити за проверу стрингова који садрже кодове новог реда онаквима какви јесу.

Поделите стринг на нове редове и листу:splitlines()

Метода стринга сплитлинес() се може користити за раздвајање стринга у листу нових редова.

сплитлинес() ће поделити било који од следећих кодова за прелом реда. Вертикалне картице и преломи страница су такође подељени.

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

Уклоните и замените кодове за повлачење линија

Комбиновањем сплитлинес() и јоин(), могуће је уклонити (уклонити) кодове за нови ред из стринга који садржи нове редове или их заменити другим стринговима.

s = 'Line1\nLine2\r\nLine3'

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

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

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

Могућа је и серијска промена кодова за повлачење линија. Чак и ако су кодови за прелом реда помешани или непознати, могу се поделити помоћу сплитлинес(), а затим спојити са жељеним кодом за прелом реда.

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

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

Као што је горе поменуто, сплитлинес() ће поделити било који код новог реда, тако да нема потребе да се посебно бринете о кодовима за нови ред у случају метода који комбинује сплитлинес() и јоин().

Ако је код новог реда јасан, може се заменити и методом реплаце(), која замењује стринг.

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'

Могуће је заменити више кодова за нови ред понављањем реплаце(), али то неће радити ако је редослед погрешан јер „\р\н“ садржи „\н“. Метода која комбинује сплитлинес() и јоин() описана је безбеднија јер нема потребе да бринете о кодовима за увођење реда.

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

Користите методу рстрип() да бисте уклонили кодове за повлачење реда на крају реченице. рстрип() је метод за уклањање знакова размака (укључујући преводе линија) на десном крају стринга.

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

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

Штампајте излаз без завршног новог реда

Функција принт() подразумевано додаје задњи нови ред. Стога, ако се принт() извршава узастопно, сваки излазни резултат ће бити приказан у новом реду.

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

То је зато што је подразумевана вредност аргумента енд оф принт(), који одређује стринг који се додаје на крају, симбол новог реда.

Ако не желите нови ред на крају, само поставите крај аргумента на празан стринг, а излаз ће бити излаз без новог реда на крају.

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

Крај аргумента може бити било који низ.

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

Међутим, ако желите да спојите стрингове за излаз, лакше је спојити оригиналне стрингове него их навести у крајњем аргументу принт(). Погледајте следећи чланак.