สตริงเป็นหนึ่งในประเภทข้อมูลที่นิยมมากที่สุดใน Python สตริงคืออ็อบเจ็กต์ที่ประกอบด้วยลำดับของอักขระในระดับสูง อักขระคือสัญลักษณ์ ตัวอย่างเช่น ภาษาอังกฤษมีอักขระ 26 ตัวในตัวอักษร
สตริง Python นั้นง่ายต่อการสร้างและจัดการ คุณสามารถเริ่มเรียนรู้ที่จะทำเช่นนั้นได้ทันที บทความนี้กล่าวถึงสตริงใน Python วิธีทำงาน และการดำเนินการทั่วไปที่ใช้กับสตริงเหล่านี้
สตริงใน Python คืออะไร?
คุณสามารถสร้างสตริงใน Python ได้ง่ายๆ โดยใส่อักขระในเครื่องหมายคำพูด ซึ่งอาจเป็นเครื่องหมายคำพูดเดี่ยว (') หรือสองครั้ง (“) เริ่มต้นและประกาศสตริงโดยกำหนดให้กับตัวแปร:
doubleQuoteString = "I'm a string" singleQuoteString = 'I\'m a string' # needs escaped single quote to treat it as a string value as opposed to end of input.
ข้อควรจำ:หากคุณต้องการใช้เครื่องหมายอะพอสทรอฟีในสตริงที่ห่อหุ้มด้วยเครื่องหมายคำพูดเดี่ยว เราจำเป็นต้องหลีกเลี่ยงอักขระนั้นด้วย "\" การดำเนินการนี้จะถือว่าคำพูดเป็นส่วนหนึ่งของสตริงตรงข้ามกับจุดสิ้นสุดของสตริง
Docstrings และ Multi-line Strings
Docstrings เป็นสตริงประเภทอื่นใน Python อยู่ในเครื่องหมายอัญประกาศ (“””) และถือเป็นความคิดเห็นแบบหลายบรรทัดในบรรทัดแรกของฟังก์ชันหรือคลาส
def printString(str): ''' takes in a string and prints it to the console ''' print(str)
docstring อธิบายว่าจุดประสงค์ของบล็อกโค้ดคืออะไร หากคุณต้องการใช้ docstring ในตรรกะของคุณ คุณสามารถทำได้โดยกำหนด docstring ให้กับตัวแปร หากกำหนดให้กับตัวแปร docstring จะกลายเป็นสตริงแบบหลายบรรทัด
multiline = ''' I'm a multi-line string that can be assigned to a variable. The format follows exactly the way YOU input it. ''' print(multiline)
สตริงแบบหลายบรรทัดจะเป็นไปตามการจัดรูปแบบภายในเครื่องหมายคำพูดสามตัว หากไม่มีการกำหนดตัวแปร สตริงจะถือเป็นความคิดเห็นและข้ามไป
Raw Strings
Python ใช้แนวคิดที่เรียกว่าสตริงดิบ แนวคิดนี้ปฏิบัติต่อทุกอย่างภายในสตริงตามที่คุณเขียน โดยเฉพาะอย่างยิ่ง แบ็กสแลชไม่ได้ถูกใช้เป็นลำดับหลีก นี่คือการเปรียบเทียบ:
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
notRaw = "I'm a not a raw string, and escape chars DO matter \n\r\t\b\a" rawString = r"I'm a raw string, where escape chars don't matter \n\r\t\b\a" print(notRaw) # I'm not a raw string, and escape chars DO matter. print(rawString) # I'm a raw string, where escape chars don't matter \n\r\t\b\a
สตริงดิบจะแสดงด้วยสตริงปกติที่นำหน้าด้วยตัวอักษร r:
r”This is a raw string”
ใช้สตริงดิบเมื่อคุณต้องการแบ็กสแลชเพื่อไม่ให้ระบุลำดับที่ใช้ Escape พิเศษบางประเภท
อักขระ Unicode ในสตริง
Unicode เป็นข้อกำหนดของอักขระที่มีเป้าหมายเพื่อกำหนดอักขระทุกตัวที่ใช้โดยภาษาใดๆ โค้ดของตัวมันเอง ในเอกสารประกอบส่วนใหญ่ ค่ายูนิโค้ดแสดงโดย:
U+
U+2661 เป็นตัวอย่างของอักขระ Unicode ประเภทหนึ่งที่เราสามารถใช้ได้ มีอักขระให้เลือกนับหมื่นตัวซึ่งเป็นตัวแทนของทุกภาษาในโลก
การเขียน Unicode ใน Python 3
ในการเขียนอักขระ Unicode ใน Python 3 ให้ใช้ Escape Sequence ในสตริงปกติที่ขึ้นต้นด้วย \u และลงท้ายด้วยรหัสที่กำหนดให้กับอักขระ (ตัวเลขที่อยู่หลัง “+”)
unicodeString = '\u2661' print(unicodeString) # ♡
คุณสามารถเชื่อมโยงอักขระ Unicode ได้มากเท่าที่คุณต้องการในแถว
ขั้นตอนการใช้ Unicode ในสตริงปกตินี้ได้รับการอัปเดตจาก Python 2 ในเวอร์ชันเก่า คุณต้องมีสตริง Unicode ที่แตกต่างกันซึ่งขึ้นต้นด้วย u’\u<unicode number here>’
เนื่องจาก Python 2 ใช้ค่า ASCII และค่า Unicode
วิธีเข้าถึงค่าในสตริง
เราใช้วงเล็บเหลี่ยมเพื่อเข้าถึงค่าในสตริงใน Python สตริงเป็นแบบอิงศูนย์เหมือนกับภาษาโปรแกรมอื่นๆ ซึ่งหมายความว่าอักขระตัวแรกในสตริงเริ่มต้นที่ดัชนีที่ศูนย์
hello = "hello world" print(hello[4]) # o
การพิมพ์ดัชนีที่สี่ในสวัสดี จะพิมพ์ "o" ไปที่คอนโซล หากคุณบังเอิญพยายามเข้าถึงดัชนีที่ไม่ได้เป็นส่วนหนึ่งของสตริง คุณจะเห็น IndexError: string index out of range
. ข้อผิดพลาดนี้หมายความว่าคุณกำลังพยายามเข้าถึงดัชนีที่มากกว่าหรือต่ำกว่าจำนวนดัชนีที่คุณมี
หมายเหตุ: หากคุณมาจากภาษาโปรแกรมเช่น C หรือ Java คุณจะคุ้นเคยกับอักขระที่มีประเภทข้อมูลเป็นของตัวเอง นี่ไม่ใช่กรณีใน Python — อักขระแต่ละตัวจะถือว่าเป็นสตริงย่อยที่มีความยาวเท่ากับหนึ่ง |
การเข้าถึงอักขระหลายตัวในสตริง
ใช้การแบ่งสตริงเพื่อเข้าถึงอักขระหลายตัวในสตริงพร้อมกัน ไวยากรณ์คือ:
string_name[first_index? : another_index?]
ดัชนีสุดท้ายไม่รวม Hello[1:3]
ในตัวอย่างก่อนหน้านี้จะคืนค่า el
และไม่ใช่ ell
.
สิ่งที่น่าสนใจเกี่ยวกับการสไลซ์ใน Python ก็คือ ค่าดัชนีไม่จำเป็นต้องทำการสไลซ์
ต่อไปนี้คือวิธีทั่วไปในการแบ่งสตริงใน Python:
string_name[:]
การใช้โคลอนภายในวงเล็บเหลี่ยมจะตัดสตริงทั้งหมดเพื่อสร้างสำเนา
hello = "hello world" copy = hello[:] + " ⇐ whole string" print(copy) # hello world ⇐ whole string
string_name[first_index:]
คุณสามารถแบ่งจากดัชนีภายในสตริงไปยังจุดสิ้นสุดโดยไม่ทราบค่าดัชนีสุดท้ายโดยปล่อยว่างไว้ภายในวงเล็บเหลี่ยม
hello = "hello world" copy = hello[2:] + " ⇐ An index to end of string" print(copy) # llo world ⇐ An index to end of string
string_name[:second_index]
การแบ่งจากจุดเริ่มต้นไปยังดัชนีอื่นทำได้โดยทำให้จุดที่ดัชนีแรกจะอยู่ในวงเล็บว่างไว้
hello = "hello world" copy = hello[:7] + " ⇐ beginning to index inside of string" print(copy) # hello w ⇐ beginning to index inside of string
string_name[first_index:second_index]
โปรดจำไว้ว่าวิธีการแบ่งส่วนจะไม่ครอบคลุมถ้าคุณมีดัชนีเฉพาะสองรายการที่คุณต้องการแบ่งส่วน ดังนั้น หากคุณต้องการสตริงจากดัชนี 1 ถึงดัชนี 6 คุณจะต้องจัดรูปแบบเป็นhello[1:7]
.
hello = "hello world" copy = hello[1:7] + " ⇐ first index to another index" print(copy) # ello w ⇐ beginning to another index inside of string
สามารถใช้ตัวเลขติดลบได้:
hello = "hello world" copy = hello[-7:-2] + " ⇐ negative indexes" print(copy) # o wor ⇐ negative indexes
การใช้การแบ่งสตริงเป็นสิ่งที่ดีเมื่อคุณต้องการจัดการกับสตริง แต่ไม่ต้องเปลี่ยนสตริงเดิม มันสร้างสำเนาของตัวเองในหน่วยความจำของดัชนีที่เลือก เพื่อให้คุณอัปเดตได้โดยไม่ต้องเปลี่ยนสตริงเดิม
วิธีการวนซ้ำสตริงใน Python
ใน Python เราจัดการกับสตริงในลักษณะเดียวกับที่เราจัดการกับอาร์เรย์ เราสามารถวนลูปผ่านสตริงได้เช่นเดียวกับที่ทำกับอาร์เรย์โดยใช้ for…in syntax:
#for...in syntax for <index> in <string>: #do logic here #example word = "career karma" for letter in word: print(letter) #prints each individual letter on each iteration
เรากำหนด 'จดหมาย' ให้กับ <ดัชนี> และ 'คำ' ให้กับ <สตริง> เพื่อวนซ้ำ "กรรมในอาชีพ" ในการทำซ้ำทุกครั้ง มันจะพิมพ์จดหมายที่วนซ้ำนั้นไปยังคอนโซล
วิธีหาความยาวของสตริง
หากต้องการค้นหาความยาวของสตริง ให้ใช้ len()
กระบวนการ.
lenExample = "The quick brown fox jumps over the lazy dog." print(len(lenExample))
อย่าใช้คำหลัก len ที่อื่นในรหัสของคุณ ล่ามจะทำให้ฟังก์ชันสับสนกับตัวแปรที่มีชื่อของคุณ
วิธีใช้ 'ใน' และ 'ไม่อยู่ใน'
คุณสามารถใช้คีย์เวิร์ดในและไม่ใช้กับสตริง Python เพื่อตรวจสอบว่ามีบางอย่างอยู่ในสตริงหรือไม่
checkString = "Career Karma will help you make a career switch to the tech industry"
checkString คือสตริงที่เราจะใช้สำหรับสองตัวอย่างถัดไป
การใช้งานใน
in
คีย์เวิร์ดสามารถใช้ทดสอบว่ามีบางสิ่งอยู่ในสตริงหรือไม่ โดยบอกล่าม Python ว่าคุณต้องการทราบว่าคำค้นหาของคุณอยู่ในสตริงที่กำหนดให้กับตัวแปรหรือไม่
print("tech" in checkString) # True
Python เป็นภาษาที่น่าเรียนรู้เพราะอ่านง่าย ไวยากรณ์ที่นี่เป็นวิธีที่คุณจะถามคำถามนั้นโดยพื้นฐานแล้วหากคุณถามบุคคลอื่น:
ถาม:“เทคโนโลยี” อยู่ใน checkString หรือไม่ (“เทคโนโลยี” ใน checkString)
(สแกนสตริง)
ตอบ:"ใช่ใช่มันเป็น" (จริง)
ไม่ใช้งาน
not in
วลีสำคัญทดสอบว่าบางสิ่งไม่อยู่ในสตริงหรือไม่ สิ่งนี้อาจทำให้สับสนในการห่อจิตใจดังนั้นให้ใส่ใจ ในที่นี้ เมื่อคุณถามว่ามีบางอย่างไม่อยู่ในสตริงหรือไม่ ข้อความนั้นจะส่งกลับ "จริง" หากไม่อยู่ในสตริง หรือ "เท็จ" หากอยู่ในสตริง
print("tech" not in checkString) # False
ต่อไปนี้คือวิธีที่เราอาจอ่านไวยากรณ์นี้หากเรากำลังพูดคุยกับบุคคลอื่น:
ถาม:“เทคโนโลยี” ไม่อยู่ใน checkString หรือไม่ (“เทคโนโลยี” ไม่อยู่ใน checkString)
(สแกนสตริง)
ตอบ:“ไม่ คำว่า “tech” อยู่ใน checkString” (เท็จ)
เราสามารถเปลี่ยนการแต่งหน้าของสตริงได้หรือไม่?
สตริงใน Python นั้นไม่เปลี่ยนรูป อักขระที่ประกอบเป็นสตริงไม่สามารถกลายพันธุ์หรือเปลี่ยนแปลงได้ด้วยวิธีใดวิธีหนึ่งหลังจากกำหนดเริ่มต้นแล้ว
delString = "Can we delete this or change this?" delString[2] = "b" print(delString)
ลองรันโค้ดนี้ในล่าม Python ของคุณ นี่คือข้อผิดพลาดที่จะส่งผลให้:
Traceback (most recent call last): File "main.py", line no., in <module> delString[2] = "b" TypeError: 'str' object does not support item assignment
TypeError ที่นี่บอกเราว่าสตริงใน Python ไม่อนุญาตให้กำหนดอักขระใหม่ คุณต้องกำหนดสตริงใหม่ทั้งหมดให้กับสตริงใหม่ที่คุณต้องการสร้างหากต้องการกำหนดอักขระใหม่ทีละตัว
delString = delString[:2] + "b" + delString[3:] print(delString)
รหัสที่นี่เป็นวิธีที่ถูกต้องในการทำสิ่งที่เราตั้งใจจะทำกับ delString[2] = “b”
บรรทัดของรหัส จำเป็นต้องมีการกำหนดใหม่ทั้งหมดเพื่อเปลี่ยนวัตถุสตริง
นอกจากนี้ยังหมายความว่าไม่สามารถลบอักขระเดี่ยวในสตริงได้ อย่างไรก็ตาม คุณสามารถลบสตริงทั้งหมดด้วย del
คำสำคัญ
del delString print(delString) #this will return an error or the linter will catch as being undefined
วิธีการสตริงยอดนิยม
มีหลายวิธีที่เกี่ยวข้องกับสตริง Python สำหรับรายการล่าสุด โปรดดูเอกสาร Python
วิธีที่นิยมใช้กันมีดังนี้ testString
เป็นสตริงตัวอย่างที่จะใช้สาธิตวิธีการส่วนใหญ่
testString = "this is a test string."
ตัวพิมพ์ใหญ่()
วิธีตัวพิมพ์ใหญ่จะทำให้ตัวอักษรตัวแรกของสตริงเป็นตัวพิมพ์ใหญ่:
capitalized = testString.capitalize() print(capitalized) # This is a test string
fin()
เมธอดในตัวนี้จะส่งคืนดัชนีของตำแหน่งที่อาร์กิวเมนต์ที่ส่งผ่านเริ่มต้นขึ้น หากไม่พบ จะส่งกลับ -1
found = testString.find("test") notfound = testString.find("not") print(found) # 10 print(notfound) # -1
เข้าร่วม()
วิธีการเข้าร่วมจะนำวัตถุ iterable ที่ส่งผ่านไปยังวิธีการ (อาจเป็นสตริง, ชุด, ทูเพิลหรือรายการ) วนซ้ำและเพิ่มตัวคั่นสตริงที่เรียกใช้เมธอด นี่คือตัวอย่าง:
separator = ", " # this is our separator - this string is the one that the method gets called on numbers = "123" # this is our iterable. In this instance, it is a string joinedByComma = separator.join(numbers) print(joinedByComma) # 1, 2, 3
ลองเล่นกับวิธีการเข้าร่วมเพื่อดูว่าคุณสามารถทำอะไรกับ iterables อื่นๆ เช่น รายการ ชุด หรือทูเพิล!
ล่าง() และบน()
ฟังก์ชันในตัวล่างและด้านบนจะจัดการกับตัวพิมพ์ของสตริง ตัวล่างจะสร้างสำเนาของสตริงเป็นตัวพิมพ์เล็กทั้งหมด upper จะสร้างสำเนาของสตริงเป็นตัวพิมพ์ใหญ่ทั้งหมด:
uppercase = testString.upper() print(uppercase) # THIS IS A TEST STRING lowercase = testString.lower() print(lowercase) # this is a test string
วิธีการเหล่านี้เป็นเพียงไม่กี่วิธีที่คุณสามารถใช้ในการจัดการกับสตริงได้ หลังจากเรียนรู้สิ่งเหล่านี้แล้ว ให้ลองดูวิธีสตริง Python อื่นๆ เช่น split()
, replace()
, title()
และ swapcase()
.
บทสรุป
ในบทความนี้ เรามาดูกันว่าสตริง Python คืออะไร ใช้งานอย่างไร และวิธีการที่มีอยู่แล้วภายในบางส่วนที่เราสามารถใช้ได้ หลังจากที่คุณเข้าใจคู่มือนี้แล้ว มาดูบทความเกี่ยวกับการจัดรูปแบบสตริงใน Python เพื่อพัฒนาการเรียนรู้ของคุณให้ดียิ่งขึ้น!