در زیر عملکرد رشته های حاوی خطوط جدید در پایتون توضیح داده شده است.
- ایجاد رشته حاوی خطوط جدید، خروجی چاپ (نمایش)
- کاراکتر خط جدید (هر دو یا CR و LF بسته به سیستم)
\n
(LF)\r\n
(CR+LF) - نقل قول سه گانه
''
،"""
- اگر می خواهید تورفتگی کنید
- کاراکتر خط جدید (هر دو یا 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() است. مقاله زیر را ببینید.