قم بإخراج ، وسلسلة ، وتقسيم ، وحذف ، واستبدال السلاسل التي تحتوي على أسطر جديدة في 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 () لتقسيم سلسلة إلى قائمة بأسطر جديدة.

ستقسم خطوط الانقسام () أيًا من أكواد فواصل الأسطر التالية. يتم أيضًا تقسيم علامات التبويب العمودية وفواصل الصفحات.

  • \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'

كما هو مذكور أعلاه ، ستقسم 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'

من الممكن استبدال رموز الأسطر الجديدة المتعددة عن طريق تكرار replace () ، لكنها لن تعمل إذا كان الطلب خاطئًا لأن “\ r \ n” يحتوي على “\ n”. الطريقة التي تجمع بين خطوط الانقسام () والجمع () الموصوفة أعلاه أكثر أمانًا لأنه لا داعي للقلق بشأن أكواد تغذية الأسطر.

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 () ، والتي تحدد السلسلة المراد إضافتها في النهاية ، هي رمز السطر الجديد.

إذا كنت لا تريد سطرًا جديدًا في النهاية ، فقم فقط بتعيين نهاية الوسيطة على سلسلة فارغة ، وسيتم إخراج الإخراج بدون سطر جديد في النهاية.

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

يمكن أن تكون نهاية الوسيطة أي سلسلة.

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

ومع ذلك ، إذا كنت تريد ربط السلاسل للإخراج ، فمن الأسهل ربط السلاسل الأصلية بدلاً من تحديدها في وسيطة نهاية print (). انظر المقال التالي.