خروجی، الحاق، تقسیم، حذف و جایگزینی رشته های حاوی خطوط جدید در پایتون

کسب و کار

در زیر عملکرد رشته های حاوی خطوط جدید در پایتون توضیح داده شده است.

  • ایجاد رشته حاوی خطوط جدید، خروجی چاپ (نمایش)
    • کاراکتر خط جدید (هر دو یا 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

این به این دلیل است که مقدار پیش فرض آرگومان end of print() که رشته ای را که باید در پایان اضافه شود مشخص می کند، نماد خط جدید است.

اگر در انتها خط جدید نمی‌خواهید، فقط آرگومان انتهایی را روی یک رشته خالی قرار دهید و خروجی بدون خط جدید در پایان خروجی خواهد بود.

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

پایان آرگومان می تواند هر رشته ای باشد.

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

با این حال، اگر می‌خواهید رشته‌ها را برای خروجی به هم متصل کنید، به هم پیوستن رشته‌های اصلی آسان‌تر از تعیین آنها در آرگومان انتهایی print() است. مقاله زیر را ببینید.

Copied title and URL