ต่อไปนี้จะอธิบายการทำงานของสตริงที่มีการขึ้นบรรทัดใหม่ใน Python
- สร้างสตริงที่มีการขึ้นบรรทัดใหม่, เอาต์พุตการพิมพ์ (แสดงผล)
- อักขระขึ้นบรรทัดใหม่ (หรือทั้ง 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
ในที่นี้ ไวยากรณ์คือตัวอักษรสตริงที่ต่อเนื่องกันถูกต่อกัน ดูบทความต่อไปนี้สำหรับรายละเอียด
- บทความที่เกี่ยวข้อง:การต่อและรวมสตริงใน Python (+ ตัวดำเนินการ เข้าร่วม ฯลฯ )
หากคุณต้องการเพิ่มการเยื้องในสตริง ให้เพิ่มช่องว่างให้กับสตริงในแต่ละบรรทัด
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() สามารถใช้เพื่อเชื่อมรายการสตริงเป็นสตริงเดียว
- บทความที่เกี่ยวข้อง:การต่อและรวมสตริงใน Python (+ ตัวดำเนินการ เข้าร่วม ฯลฯ )
เมื่อ 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()
หากรหัสขึ้นบรรทัดใหม่ชัดเจน ก็สามารถแทนที่ด้วยวิธีการแทนที่ () ซึ่งจะแทนที่สตริง
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() ซึ่งระบุสตริงที่จะเพิ่มในตอนท้าย เป็นสัญลักษณ์ขึ้นบรรทัดใหม่
หากคุณไม่ต้องการขึ้นบรรทัดใหม่ต่อท้าย ให้ตั้งค่าอาร์กิวเมนต์ end เป็นสตริงว่าง แล้วเอาต์พุตจะออกโดยไม่มีการขึ้นบรรทัดใหม่ต่อท้าย
print('a', end='')
print('b', end='')
print('c', end='')
# abc
อาร์กิวเมนต์สิ้นสุดสามารถเป็นสตริงใดก็ได้
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
อย่างไรก็ตาม หากคุณต้องการเชื่อมสตริงสำหรับเอาต์พุต การเชื่อมสตริงดั้งเดิมทำได้ง่ายกว่าการระบุในอาร์กิวเมนต์ท้ายของ print() ดูบทความต่อไปนี้
- บทความที่เกี่ยวข้อง:การต่อและรวมสตริงใน Python (+ ตัวดำเนินการ เข้าร่วม ฯลฯ )