Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Strings:หนึ่งในประเภทข้อมูลยอดนิยมของ Python

สตริงเป็นหนึ่งในประเภทข้อมูลที่นิยมมากที่สุดใน 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 ⇒ ♡

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 เพื่อพัฒนาการเรียนรู้ของคุณให้ดียิ่งขึ้น!