رشته (str)

اصلاح شده

2026-04-18

یک رشته، دنباله‌ای از کاراکترهاست و یک لیست دنباله‌ای از عناصر. اما یک لیست از کاراکترها، همانند یک رشته نیست. برای تبدیل یک رشته به یک لیست، می‌توان از متد یا تابع list("spam") استفاده کرد:

s = 'spam'
t = list(s)
print(t)
['s', 'p', 'a', 'm']

اما اگر بخواهیم رشته‌ای از کلمات را به لیست تبدیل کنیم، چه باید کرد:

print('pining for the fjords'.split())
['pining', 'for', 'the', 'fjords']

و یا مثالی دیگر که در آن با کاربرد توابع split() و ' '.join(list) آشنا می‌شویم:

print('spam-spam-spam'.split('-'))
['spam', 'spam', 'spam']
print('-'.join(['pining', 'for', 'the', 'fjords']))
'pining for the fjords'

محاسبه طول متن

len() یک تابع داخلی در پایتون است که تعداد کاراکترهای یک رشته را برمی‌گرداند.

length = len('banana')

حال اگر این عدد را به عنوان اندیس متغیر رشته استفاده کنیم، آخرین کاراکتر رشته را بدست می‌آوریم:

last = fruit[length - 1]
print(last)
a

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

بنابراین برای دستیابی به موقعیت‌های دیگر یک رشته، می‌توان اندیس‌ها را تغییر داد:

fruit = 'banana'
print(fruit[:3])
ana

رشته‌ها تغییرناپذیرند

درعین حال اینکه می‌توان به همه کاراکترهای یک رشته دست پیدا کرد، اما نمی‌توان کاراکتر دیگری را جایگزین یکی از کاراکترهای رشته کرد:

greeting = 'Hello, world!'
greeting[0] = 'J'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

اگر این دستور را اجرا کنید، با خطا مواجه می‌شوید، چراکه رشته‌ها قابل تغییر نیستند.

عملگر in

گاربرد این عملگر زمانی است که می‌خواهیم بدانیم آیا یک رشته حاوی یک رشته و یا کاراکتر خاصی هست یا خیر:

print('a' in 'banana')
True

و یا این حالت:

print('seed' in 'banana')
False

همچنین با استفاده از عملگرهای < و > می‌توانیم رشته‌ها را از نظر ترتیب حروف الفبا با یکدیگر مقایسه کنیم:

print('a' < 'b')
True

متدهای رشته‌ای

پایتون تابعی به نام dir() دارد که متدهای مربوط به یک شیئ را لیست می‌کند و همچنین با استفاده از type() می‌توانیم نوع شیئ را تشخیص دهیم:

stuff = 'Hello world'
print(type(stuff))
<class 'str'>
dir(stuff)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

روش دیگر برای یافتن موقعیت یک زیررشته و یا یک کاراکتر خاص در یک رشته اصلی، استفاده از متد find() می‌باشد:

word = 'banana'
index = word.find('a')
print(index)
1

خوب است با متدهای strip() و startwith() و lower() برای آشنایی بیشتر با متدهای رشته‌ای، در برنامه پایتون خودمان تمرین کنیم.

عملگر فرمت

عملگر format %، به ما اجازه می‌دهد تا رشته‌ها را بسازیم و بخش‌هایی از رشته‌ها را با داده‌های ذخیره شده در متغیرها جایگزین کنیم:

camels = 42
print('%d camels' % camels)
'42 camels'

در مثال بالا توانستیم حروف 4 و 2 را به عدد 42 تبدیل کنیم. d مخفف “digit” است. و یا این مثال:

camels = 42
print('I have spotted %d camels.' % camels)
'I have spotted 42 camels.'

به همین ترتیب، عملگرهای %g و %s وظیفه قالب‌بندی یک عدد ممیز شناور و قالب‌بندی یک رشته را به عهده دارند:

fmt_string = 'In %d years I have spotted %g %s.' % (3, 0.1, 'camels')

print(fmt_string)
'In 3 years I have spotted 0.1 camels.'

یک شکل جدید از قالب رشته‌ای در نسخه‌های جدید پایتون استفاده از f'' یا همان f-string است.

age = 27
name = "Mohsen"

text = f"Mr {name} is {age} years old."
print(text)
Mr Mohsen is 27 years old.