متدهای String

پایتون مجموعه‌ای از متدهای داخلی دارد که می‌توانید از آن‌ها در رشته‌ها استفاده کنید. دقت داشته باشید که تمام متدها مقادیر جدید را برمی‌گردانند. آن‌ها رشته اصلی را تغییر نمی‌دهند.

strip

فضای خالی را از ابتدا یا انتها حذف می‌کند.

# Input
a = "  Hello, World!  "
print(a.strip())

# Output
Hello, World!

lower

رشته را با حروف کوچک برمی‌گرداند.

# Input
a = "Hello, World!"
print(a.lower())

# Output
hello, world!

upper

رشته را با حروف بزرگ برمی‌گرداند.

# Input
a = "Hello, World!"
print(a.upper())

# Output
HELLO, WORLD!

replace

رشته را با رشته‌ دیگری جایگزین می‌کند.

# Input
a = "Hello, World!"
print(a.replace("H", "J"))

# Output
Jello, World!

split

رشته اصلی را بر اساس یک جدا کننده (کاراکتر مشخص) به زیر رشته‌ها تقسیم می‌کند.

# Input
a = "Hello, World!"
b = a.split(",")
print(b)

# Output
['Hello', ' World!']

capitalize

کاراکتر اول رشته را به حرف بزرگ تبدیل می‌کند.

# Input
txt = "hello, and welcome to my world."
x = txt.capitalize()
print (x)

# Output
Hello, and welcome to my world.

در مثال زیر ببینید چه اتفاقی می‌افتد اگر کاراکتر اول رشته عدد باشد.

# Input
txt = "36 is my age."
x = txt.capitalize()
print (x)

# Output
36 is my age.

casefold

رشته را به حروف کوچک تبدیل می‌کند.
این متد شبیه متد lower است اما قوی‌تر و مهاجم‌تر است. به این معنی که کاراکترهای بیشتری را به حروف کوچک تبدیل می‌کند.

# Input
txt = "Hello, And Welcome To My World!"
x = txt.casefold()
print(x)

# Output
hello, and welcome to my world!

center

رشته را وسط چین می‌کند. به عبارت دیگر این متد با استفاده از یک کاراکتر مشخص (فضای خالی به صورت پیش‌فرض است) رشته را تراز می‌کند.
در مثال زیر کلمه banana در وسط فضایی با ۲۰ کاراکتر چاپ می‌شود.

# Input
txt = "banana"
x = txt.center(20)
print(x)

# Output
       banana     

در مثال زیر فضای خالی را با استفاده از حرف O پر شده است.

# Input
txt = "banana"
x = txt.center(20, "O")
print(x)

# Output
OOOOOOObananaOOOOOOO

count

تعداد دفعاتی را که یک کاراکتر در رشته تکرار می‌شود را مشخص می‌کند.

# Input
txt = "I love apples, apple are my favorite fruit"
x = txt.count("apple")
print(x)

# Output
2

در مثال زیر کلمه apple در موقعیت‌های ۱۰ تا ۲۴ جستجو می‌شود.

# Input
txt = "I love apples, apple are my favorite fruit"
x = txt.count("apple", 10, 24)
print(x)

# Output
1

encode

با استفاده از رمزگذاری مشخص شده، رشته را رمزگذاری می‌کند. اگر رمزگذاری، مشخص نشده باشد از UTF-9 استفاده می‌شود.

# Input
txt = "My name is Ståle"
x = txt.encode()
print(x)

# Output
b'My name is St\xc3\xe5le'

مثال زیر از رمزگذاری ascii و کاراکتری که امکان رمزگذاری وجود ندارد استفاده می‌کند و نتیجه را با خطاهای مختلف نشان می‌دهد.

# Input
txt = "My name is Ståle"

print(txt.encode(encoding="ascii",errors="backslashreplace"))
print(txt.encode(encoding="ascii",errors="ignore"))
print(txt.encode(encoding="ascii",errors="namereplace"))
print(txt.encode(encoding="ascii",errors="replace"))
print(txt.encode(encoding="ascii",errors="xmlcharrefreplace"))
print(txt.encode(encoding="ascii",errors="strict"))


# Output
b'My name is St\\xe5le'
b'My name is Stle'
b'My name is St\\N{LATIN SMALL LETTER A WITH RING ABOVE}le'
b'My name is St?le'
b'My name is Ståle'
Traceback (most recent call last):
  File "demo_ref_string_encode2,py", line 8, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character '\xe5\ in position 13: ordinal not in range(128)

endwith

اگر رشته با مقدار مشخص شده به پایان برسد، مقدار True برمی‌گرداند.

# Input
txt = "Hello, welcome to my world."
x = txt.endswith(".")
print(x)

# Output
True

مثال زیر چک می‌کند آیا رشته با عبارت my world تمام می‌شود؟

# Input
txt = "Hello, welcome to my world"
x = txt.endswith("my world")
print(x)

# Output
True

مثال زیر چک می‌کند آیا رشته با عبارت my world در موقعیت ۵ تا ۱۱ تمام می‌شود؟

# Input
txt = "Hello, welcome to my world"
x = txt.endswith("my world", 5, 11)
print(x)

# Output
False

expandtabs

اندازه فضای خالی Tab را در رشته تنظیم می‌کند.

# Input
txt = "H\te\tl\tl\to"
x =  txt.expandtabs(2)
print(x)

# Output
H e l l o

مثال زیر خروجی را با اندازه‌های مختلف نشان می‌دهد.

# Input
txt = "H\te\tl\tl\to"

print(txt)
print(txt.expandtabs())
print(txt.expandtabs(2))
print(txt.expandtabs(4))
print(txt.expandtabs(10))

# Output
H       e       l       l       o
H       e       l       l       o
H e l l o
H   e   l   l   o
H         e         l         l         o

find

یک مقدار مشخص را در رشته جستجو می‌کند و موقعیت مکانی را که در آن پیدا شده است باز‌می‌گرداند.
این متد موقعیت اولین مقدار پیدا شده را بازمی‌گرداند. اگر مقدار پیدا نشد 1- را بازمی‌گرداند.
متد find با متد index تقریباً مشابه است تنها تفاوت در متد index این است که اگر مقدار پیدا نشد یک استثناء ایجاد می‌کند.

# Input
txt = "Hello, welcome to my world."
x = txt.find("welcome")
print(x)

# Output
7

مثال زیر موقعیت اولین حرف e که در رشته وجود دارد را بازمی‌گرداند.

# Input
txt = "Hello, welcome to my world."
x = txt.find("e")
print(x)

# Output
1

مثال زیر موقعیت اولین حرف e که بین موقعیت ۵ تا ۱۰ است را بازمی‌گرداند.

# Input
txt = "Hello, welcome to my world."
x = txt.find("e", 5, 10)
print(x)

# Output
8

format

مقادیر مشخص شده را فرمت می‌کند و آن‌ها را درون محل نگهدارنده رشته قرار می‌دهد.
محل نگهدارنده با استفاده از براکت ایجاد می‌شود.
به طور خلاصه این متد، رشته فرمت شده را برمی‌گرداند.
مثال زیر price را در محل نگهدارنده که با براکت ایجاد شده وارد می‌کند. Price باید ممیز ثابت با دو رقم باشد.

# Input
txt = "For only {price:.2f} dollars!"
print(txt.format(price = 49))

# Output
For only 49.00 dollars!

محل‌های نگهدارنده را می‌توان با استفاده از شاخص‌های نام‌گذاری ‌شده {price}، شاخص‌های شماره‌گذاری شده {0} یا حتی با براکت های خالی {} شناسایی کرد.

# Input
# named indexes:
txt1 = "My name is {fname}, I'm {age}".format(fname = "John", age = 36)
print(txt1)

# numbered indexes:
txt2 = "My name is {0}, I'm {1}".format("John",36)
print(txt2)

# empty placeholders:
txt3 = "My name is {}, I'm {}".format("John",36)
print(txt3)

# Output
My name is John, I'm 36
My name is John, I'm 36
My name is John, I'm 36

در داخل براکت‌ها می‌توانید نوع فرمت بندی را مشخص کنید.

index

یک مقدار مشخص را در رشته جستجو می‌کند و موقعیت مکانی را که در آن پیدا شده است را باز‌می‌گرداند.
در صورت عدم یافتن مقدار یک استثناء ایجاد می‌کند.
متد index تقریباً مشابه متد find است. تنها تفاوت این است که متد find اگر مقدار را پیدا نکند 1- را برمی‌گرداند.

# Input
txt = "Hello, welcome to my world."
x = txt.index("welcome")
print(x)

# Output
7

مثال زیر موقعیت اولین حرف e که در رشته وجود دارد را بازمی‌گرداند.

# Input
txt = "Hello, welcome to my world."
x = txt.index("e")
print(x)

# Output
1

مثال زیر موقعیت اولین حرف e که بین موقعیت ۵ تا ۱۰ است را بازمی‌گرداند.

# Input
txt = "Hello, welcome to my world."
x = txt.index("e", 5, 10)
print(x)


# Output
8

مثال زیر تفاوت متد find و index در صورتی که مقدار پیدا نشود را نشان می‌دهد.

# Input
txt = "Hello, welcome to my world."

print(txt.find("q"))
print(txt.index("q"))

# Output
-1
Traceback (most recent call last):
  File "demo_ref_string_find_vs_index.py", line 4 in <module>
    print(txt.index("q"))
ValueError: substring not found

متدهای String در پایتون – بخش دوم را مطالعه کنید.

منابع
w3schools.com – Python String
w3schools.com – Python String Methods
Photo by Negative Space from Pexels

نظر دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *