وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش به هم پیوستن رشته ها در پایتون

0 83
زمان لازم برای مطالعه: 5 دقیقه


معرفی

در این آموزش کوتاه، روش انجام این کار را بررسی خواهیم کرد به هم پیوستن رشته ها در پایتون، از طریق چند رویکرد مختلف.

شایان ذکر است که رشته ها در پایتون هستند تغییرناپذیر – یک شی رشته در حافظه پس از ایجاد قابل تغییر نیست:

newString = "Some new string"

اگر می خواهید این رشته را به هر طریقی تغییر دهید – در زیر کاپوت، یک رشته جدید با آن تغییرات ایجاد می شود. همین امر در مورد رشته های پیوسته نیز صدق می کند – یک شی جدید باید در حافظه ایجاد شود.

الحاق رشته و الحاق رشته

الحاق رشته ها به اتصال دو یا چند رشته به هم اشاره دارد، گویی پیوندهایی در یک زنجیره. شما می توانید به هر ترتیبی مانند الحاق str1 بین str2 و str3.

الحاق رشته ها اشاره دارد به الحاقی یک یا چند رشته به انتهای یک رشته دیگر.

در برخی موارد، این اصطلاحات کاملاً قابل تعویض هستند. الحاق رشته ها همان عملیات الحاق رشته ها در انتهای رشته دیگر است. بیایید با ساده ترین راه شروع کنیم الحاق / الحاق دو (یا بیشتر) رشته

الحاق یا الحاق رشته ها با + اپراتور

در پایتون، یک رشته لیستی از کاراکترها است، به این معنی است که + از عملگر می توان برای اضافه کردن عناصر تشکیل دهنده آنها در یک لیست جدید استفاده کرد:

title = "Prof. "
name = "Richard Feynman"

result = title + name
print(result)

این نتیجه در:

Prof. Richard Feynman

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

string1 = "Concatenating"
string2 = "strings"
string3 = "in Python"
string4 = "is easy!"

print(string1 + string2 + string3 + string4)

اگرچه، اگر هدف شما ساختن یک است جمله از لیستی از رشته ها مانند این، به هم پیوستن آنها به صورت دستی، و بدون کاراکترهای ویژه هم ناکارآمد هستند و هم خروجی نامفهومی تولید می کنند:

Concatenatingstringsin Pythonis easy!

بسیار معقول‌تر است که فهرستی از رشته‌ها را تکرار کنید و آنها را با یک فضای خالی بین هر رشته به هم اضافه کنید:

strings = ("Concatenating", "strings", "in Python", "is easy!")

result = ""
for string in strings:
    result += string + " "

print(result)

این نتیجه در:

Concatenating strings in Python is easy! 

آ کوتاه نویسی عملگر شما می توانید برای به هم پیوستن دو رشته استفاده کنید +=، درست مانند مثال قبلی. این شما را از مشکل ایجاد یک متغیر جدید برای ذخیره نتایج نجات می دهد، زیرا می توانید از یکی از متغیرهای مرجع موجود برای تخصیص به شی جدید در حافظه مجددا استفاده کنید:

string1 = "one"
string2 = "two"

string1 += string2
print(string1) 

محدودیت از + اپراتور

محدودیت اصلی از + عملگر این واقعیت است که شما نمی توانید انواع را با هم ترکیب کنید. شما نمی توانید یک عدد صحیح به لیستی از کاراکترها اضافه کنید، به عنوان مثال:

print("some string" + 2)

بسیاری از زبان ها مانند جاوا اسکریپت و جاوا انتخاب می شوند روی این، و به طور خودکار عدد صحیح را به یک رشته تبدیل می کند (انواع را مطابقت دهد) و الحاق را انجام می دهد، هرچند، پایتون یک TypeError:

TypeError: can only concatenate str (not "int") to str

با این حال، یک راه حل آسان وجود دارد – می توانید از برنامه داخلی پایتون استفاده کنید str() تابعی که انواع داده های سازگار را به یک رشته تبدیل می کند. بیایید چند عدد صحیح به ما اضافه کنیم strings لیست و کادر همه از موارد با الف str() در صورت وجود عناصر غیر رشته ای:

strings = ("Concatenating", "strings", "in Python", "is easy!", 5, 2)

result = ""
for string in strings:
    result += str(string) + " "

print(result)

این نتیجه در:

Concatenating strings in Python is easy! 5 2 

الحاق یا الحاق رشته ها با * اپراتور

اگر می خواهید با تکرار یک رشته یک رشته جدید ایجاد کنید n تعداد دفعات و اضافه کردن آن، می توانید با * اپراتور:

string = "w"

print(string * 3) 

این می تواند حتی مفیدتر زمانی که با آن ترکیب شود + اپراتور:

print("w"*3 + "." + "rasanegar.com")

که منجر به:

www.rasanegar.com

الحاق یا الحاق رشته ها با % اپراتور

باز هم، الحاق لزوماً به این معنی نیست که ما یک رشته را به انتها اضافه می کنیم. با استفاده از % اپراتور، ما می توانیم انجام دهیم درون یابی رشته ای. با اضافه کردن % در یک رشته به عنوان نشانگر، بعداً می توانیم نشانگرها را با رشته های بتنی جایگزین کنیم روی:

string = "This %s is a %s string" % ("here", "random")

print(string)

این باید خروجی دهد:

This here is a random string

به طور مشابه، می توانید از نشانگرهای دیگر برای انواع داده های دیگر استفاده کنید:

  • %d – برای نمایش اعداد صحیح:
string = "This is a string%d" % (1)
print(string) 
  • %c – برای نمایش شخصیت:
string = "This string starts with a %c" % ('T')
print(string) 
  • %f – برای عدد شناور:
string = "There is a %f percent chance that you'll learn string concatenation in Python after reading this article" % (99.99)
print(string) 

توجه داشته باشید: اگر می‌خواهید صریحاً مشخص کنید که این عدد به چند رقم باید گرد شود (مثلاً 2)، می‌توانید آن را با: %.2f.

اگر می‌خواهید درباره قالب‌بندی رشته‌ها در پایتون و روش‌های مختلف انجام آن اطلاعات بیشتری کسب کنید، راهنمای قالب‌بندی رشته‌ها در f-strings پایتون 3 را بخوانید.

الحاق رشته ها با پیوستن() روش

join() روش طول می کشد قابل تکرار به عنوان یک آرگومان و a را برمی گرداند رشته خلق شده توسط پیوستن عناصر آن تکرار شونده شایان ذکر است که اینها دارند رشته بودن – هر عنصر است نه ذاتا با استفاده از تبدیل شده است str()، بر خلاف روش قبلی ما.

پیشنهاد می‌کنیم بخوانید:  روش استفاده از زیر ماژول های Git - با مثال توضیح داده شده است

علاوه بر این، الف separator برای تعریف جداکننده بین رشته های به هم پیوسته استفاده می شود و این همان است پایه رشته ای که ما تماس می گیریم join() روی:

my_list = ("1", "2", "3", "4") 
string_from_list = "-".join(my_list) 

print(string_from_list)

این باید خروجی دهد:

1-2-3-4

در بسیاری از موارد، جداکننده فقط یک فضای خالی است، بنابراین معمولاً خواهید دید:

" ".join(iterable)

پیاده سازی سفارشی پیوستن() روش

از آنجایی که ساخته شده است join() روش ممکن است کمی متفاوت از آنچه شما انتظار داشتید رفتار کند، بیایید روش خود را پیاده سازی کنیم join() روش با قابل تنظیم separator.

ما می خواهیم که بتواند لیست های دو بعدی را نیز مدیریت کند، بنابراین اگر لیستی حاوی لیست دیگری در درون خود باشد – قبل از پیوستن به یک لیست یک بعدی مسطح می شود:

import itertools

def join(iterable, separator):
    
    result = ""
    
    iterable = list(itertools.chain(*iterable))
    
    for string in iterable:
        result += str(string) + separator
    return result
    

string = join(('a', 'b', 'c'), ' ')
string2 = join(('a', ('b', 'c'), 'd'), ' ')

print(string)
print(string2)

این نتیجه در:

a b c 
a b c d 

الحاق رشته ها با استفاده از فاصله

یک راه ساده برای به هم پیوستن رشته ها، معمولا فقط زمانی که آنها را چاپ می کنید استفاده از نوار فاصله است. این روش معمولاً فقط برای چاپ استفاده می شود، زیرا تخصیص آن به یک شی در حافظه آسان است، اما ناخوشایند:

print("Concat" " strings" " using Space")

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

print("Concat", "strings", "using Space")

هر دوی اینها منجر به:

Concat strings using Space

اگر می‌خواهید آن‌ها را به یک متغیر اختصاص دهید، می‌توانید این کار را انجام دهید، و آنها به‌طور خودکار در یک رشته به هم متصل می‌شوند:

string = "this " "is " "a " "big " "string"
print(type(string))
print(string)

این نتیجه در:

<class 'str'>
this is a big string

حتی می توانید رشته های چند خطی انجام دهید. برای رسیدن به این هدف، یک را اضافه می کنیم \ تا انتهای هر خط به پایتون اطلاع دهید که بیش از یک خط وجود دارد:

multi_line_string = "this " "string " \
               	  "is coded in " "three lines " \
                  "but printed in one"
               	  
print(multi_line_string)

این نتیجه در:

this string is coded in three lines but printed in one

اگرچه، این رویکرد بی‌معنا و ناخوشایند است و دیگران ترجیح داده می‌شوند.

توجه داشته باشید: همان اثر را نمی توان با متغیرها به دست آورد، فقط رشته های واقعی:

string1 = "one string"
string2 = "two string"

final_string = string1 string2

این نتیجه در:

File "<string>", line 4
    final_string = string1 string2
                           ^
SyntaxError: invalid syntax

نتیجه

پیوستن / الحاق / پیوستن رشته ها در پایتون نسبتاً ساده است و مانند هر چیزی که به پایتون مربوط می شود، راه های زیادی برای انجام آن وجود دارد. این فقط به نیازها و ترجیحات شما بستگی دارد.

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

در این آموزش کوتاه، به برخی از روش های به هم پیوستن رشته ها نگاهی انداخته ایم

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-09 10:02:10

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید