English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل بايثون الأساسي

تحكم في العملية في بايثون

وظائف في Python

أنواع البيانات في Python

عمليات ملفات بايثون

الأغراض والفئات في بايثون

التواريخ والوقت في بايثون

معرفة متقدمة في بايثون

دليل بايثون

النص (String) في Python

في هذا الدليل، ستتعلم كيفية إنشاء وتنسيق وتعديل وحذف السلسلة في بايثون. سيتم أيضًا تقديم مجموعة متنوعة من عمليات السلسلة والوظائف.

ما هو السلسلة في بايثون؟

السلسلة هي ترتيب من الأحرف.

الرمز هو مجرد رمز. على سبيل المثال، لدي اللغة الإنجليزية 26 رمزًا.

الحاسوب لا يعالج الأحرف، بل يعالج الأرقام (النظام الثنائي). حتى لو رأيت الأحرف على الشاشة، فإنها يتم تخزينها وتشغيلها كتجميع من الصفر والأرقام الـ1.

يُدعى هذا التحويل من الحرف إلى الرقم الترميز، والعملية المعكوسة تُدعى التفكير في الترميز. ASCII وUnicode بعض الترميزات الشائعة.

في Python، السلاسل هي سلسلة من الأحرف Unicode. يشمل Unicode كل حرف في كل لغة ويقدم ترميزًا موحدًا. يمكنك من هنامعرفة المزيد عن Unicode.

كيف يمكن إنشاء سلاسل في Python؟

يمكن إنشاء سلاسل باستخدام حرفين أو علامتين اقتباس دائرية. يمكن استخدام الأقواس الثلاثية أيضًا في Python، ولكن عادة ما تستخدم لتمثيل سلاسل الأعمدة والمساعدات النصية.

#كل من هذه متساوية
my_string = 'مرحبًا'
print(my_string)
my_string = "مرحبًا"
print(my_string)
my_string = '''مرحبًا'''
print(my_string)
#يمكن للعبارات الثلاثية الأقواس أن تتمدد عبر سطرين
my_string = """مرحبًا، مرحبًا بكم في
           العالم من Python"""
print(my_string)

عند تشغيل هذا البرنامج، الناتج هو:

مرحبًا
مرحبًا
مرحبًا
مرحبًا، مرحبًا بكم في
           العالم من Python

كيف يمكن الوصول إلى حرف في السلسلة؟

يمكننا الوصول إلى حرف واحد باستخدام الرقم، واستخراج سلسلة من الحروف باستخدام القطع. تبدأ الرقم من 0. إذا حاول الوصول إلى حرف خارج نطاق الرقم، سيتم إطلاق خطأ IndexError. يجب أن يكون الرقم صحيحًا. لا يمكن استخدام float أو أي نوع آخر، مما يؤدي إلى TypeError.

يسمح باختبار السلاسل الموجودة.

رقم -1 يمثل العنصر الأخير، و-2 يمثل العنصر الثاني من النهاية، وهكذا. يمكننا استخدام عمليات القطع (الشق) لاستخراج سلسلة من العناصر من الخط النصي.

str = 'oldtoolbag.com'
print('str = ', str)
#حرف الأول
print('str[0] = ', str[0])
#حرف الأخر
print('str[-1] = ', str[-1])
#قطع من الرقم الثاني إلى الرقم الخامس
print('str[1:5] = ', str[1:5])
#قطع من الرقم 6 إلى الرقم الثاني من النهاية
print('str[5:-2] = ', str[5:-2])

نتائج الخروج:

str = oldtoolbag.com
str[0] = n
str[-1] = m
str[1:5] = hooo
str[5:-2] = .c

إذا حاول الوصول إلى فهرس خارج النطاق أو استخدام عدد عشري، ستحدث خطأ.

# يجب أن يكون الفهرس في النطاق
>>> my_string[15]  
...
IndexError: string index out of range
# يجب أن يكون الفهرس عددًا صحيحًا
>>> my_string[1.5] 
...
TypeError: string indices must be integers

من خلال النظر إلى الفهرس كالمكان بين العناصر، يمكننا تحديد قطع النص بشكل أفضل، مثلما هو موضح أدناه.

إذا كنت ترغب في الوصول إلى نطاق،则需要 فهرس، والذي سيقوم بتقسيم جزء من النص.

كيفية تغيير أو حذف النص؟

النص غير القابل للتغيير. هذا يعني أن عناصر النص لا يمكن تعديلها بعد تخصيصها. يمكننا ببساطة إعادة تخصيص نصين مختلفين لنفس الاسم.

>>> my_string = 'oldtoolbag.com'
>>> my_string[5] = 'a'
...
TypeError: 'str' object does not support item assignment
>>> my_string = 'Python'
>>> my_string
'Python'

لا يمكننا حذف أو إزالة حرف من النص. ولكن يمكننا استخدام مفتاح del لحذف النص بالكامل.

>>> del my_string[1]
...
TypeError: 'str' object doesn't support item deletion
>>> del my_string
>>> my_string
...
NameError: name 'my_string' is not defined

عمليات نص بايثون

يمكن للنصين تنفيذ العديد من العمليات مما يجعلهفي بايثونأكثرها شيوعًانوع البيانات之一.

جمع نصين أو أكثر

جمع نصين أو أكثر في نص واحد يُدعى الجمع.

عامل + في بايثون يقوم بعملية الجمع. يمكن ببساطة كتابة نصين نصيين معًا، أو جمعهما معًا.

* يمكن استخدام العوامل للحصول على تكرار النص المحدد.

str1 = 'Hello'
str2 = 'World!'
# using +
print('str1 + str2 =', str1 + str2)
# using *
print('str1 * 3 =', str1 * 3)

إذا كتبت النصين نصيين معًا، فهما سيتم جمعهما أيضًا.+عوامل الحساب تجمعها معًا.

إذا كنت ترغب في ربط النصين على أسطر مختلفة، يمكنك استخدام الأقواس.

>>> # إجتماع نصين نصيين معًا
>>> 'Hello ''World!'
'Hello World!'
>>> # استخدام الأقواس
>>> s = ('Hello '
...      'World')
>>> s
'Hello World'

تكرار النص

استخداملفة التكرار،يمكننا تكرار النص. هذا مثال على حساب عدد حرف 'l' في النص.

count = 0
for letter in 'Hello World':
    if(letter == 'l'):
        count += 1
print(count,'letters found')

اختبار العضوية في النص

يمكننا استخدام الكلمة المفتاحية in لاختبار وجود نص فرعي في النص.

>>> 'a' in 'program'
True
>>> 'at' not in 'battle'
False

استخدام الدوال المدمجة في بايثون

يمكن استخدام مجموعة متنوعة من الدوال المدمجة في sequence و string.

بعض الأنواع الشائعة هي enumerate() و len(). وظيفة enumerate() هي: العودة إلى عنصر التعداد. يحتوي على زوج يحتوي على فهرس القيمة والقيمة لكل عنصر في النص. هذا مفيد جدًا في التكرار.

بالمثل،يستعيد len() طول النص (عدد الحروف).

str = 'cold'
# enumerate()
list_enumerate = list(enumerate(str))
print('list(enumerate(str) = ', list_enumerate)
#عدد الحروف
print('طول(str) = ', len(str))

تنسيق النصوص في بايثون

转义序列

إذا أردنا طباعة نص - قال: "ماذا هناك؟" - لا يمكننا استخدام البكارة أو الأقواس المزدوجة. هذا سيتسبب في SyntaxError النص يحتوي على البكارة والأقواس المزدوجة.

>>> print("He said, "What's there?"")
...
SyntaxError: invalid syntax
>>> print('He said, "What's there?"')
...
SyntaxError: invalid syntax

أحد الحلول لهذه المشكلة هو استخدام البكارة الثلاثة. بالإضافة إلى ذلك، يمكننا استخدام سلسلة الاستبدال.

سلسلة الاستبدال تبدأ ببازالين العكسي، وتُفسر بطرق مختلفة. إذا استخدمنا البكارة لتعريف النص، يجب أن نستبدل جميع البكارات في النص. نفس الأمر ينطبق على الأقواس المزدوجة. هذا هو الطريقة لتعريف النص المذكور.

# استخدام ثلاثة تكرارات من البكارة
print('''He \\nsaid, \\"What\\'s \\nthere?\\"''')
# 转义单引号
print('He \\nsaid, \\"What\\'s \\nthere?\\"')
# 转义双引号
print("He \\nsaid, \\"What\\'s \\nthere?\\"")

这是Python支持的所有转义序列的列表。

Python中的转义序列
转义序列描述
\\newline
\\\",反斜杠
\\'单引号
\\"双引号
\\aASCII铃声
\\bASCII退格键
\\fASCII换页
\\nASCII换行
\\rASCII回车
\\tASCII水平制表符
\\vASCII垂直制表符
\\ooo具有八进制值的字符
\\xHH具有十六进制值HH的字符

这里有些示例

>>> print("C:\\\Python32\\\\Lib")
C:\\Python32\\Lib
>>> print("This \\nis \\nprinted\\nin \\ntwo \\nlines")
This \\nis \\nprinted
in \\ntwo \\nlines
>>> print("This \\nis \\n\x48\x45\x58 \\nrepresentation")
This \\nis \\nHEX \\nrepresentation

原始字符串忽略转义序列

有时我们可能希望忽略字符串中的转义序列。为此,我们可以将其放置在字符串的前面r或R前面。这意味着这是一个原始字符串,并且其中的任何转义序列都将被忽略。

>>> print("This \\x61 \\ngood \\nexample")
This \\nis \\na
good \\nexample
>>> print(r"This \\x61 \\ngood \\nexample")
This \\x61 \\ngood \\nexample

用format()方法格式化字符串

与string对象一起使用的format()方法非常通用,并且在格式化字符串方面功能非常强大。格式字符串包含大括号{}作为占位符或被替换的替换字段。

我们可以使用位置参数或关键字参数来指定顺序。

# 默认(隐式)顺序
default_order = ",{} {},{}".format('John','Bill','Sean')
print('\n--- Default Order ---')
print('\n--- Default Order ---')
print(default_order)
# استخدام معاملات الترتيب
positional_order = "{1}, {0} و {2}".format('John', 'Bill', 'Sean')
print('\n--- Positional Order ---')
print(positional_order)
# استخدام معاملات الكلمات المفتاحية للترتيب
keyword_order = "{s}, {b} و {j}".format(j='John', b='Bill', s='Sean')
print('\n--- Keyword Order ---')

print(keyword_order)يمكن أن يكون لدى method format() معايير تنسيق اختيارية. تستخدم العلامة العشرية لفصل اسم الحقل. على سبيل المثال، يمكننا تنسيق النصوص باستخدام التضارب <، أو التضارب > أو ^ لتنسيق النصوص في وسط المكان. يمكننا أيضًا تنسيق الأرقام الصحيحة على شكل ثنائي، أو عشري، ويمكن تقريب الأرقام العشرية أو عرضها على شكل عدد عشري. يمكنك استخدام العديد من التنسيقات. يرجى زيارة هذا المكان للحصول علىالحصول على format()الطرقكلتنسيق النصوص.

>>> # تنسيق الأرقام الصحيحة
>>> "ممثل الرقم الثنائي لـ {0} هو {0:b}".format(12)
'ممثل الرقم الثنائي لـ 12 هو 1100'
>>> # تنسيق الأرقام العشرية
>>> "ممثل الأرقام العشرية: {0:e}".format(1566.345)
'ممثل الأرقام العشرية: 1.566345e+03'
>>> # تقريب
>>> "ثلث واحد هو: {0:.3f}".format(1/3)
'ثلث واحد هو: 0.333'
>>> # تنسيق النصوص
>>> "|{:<10}|{:^10}|{:>10}|".format('butter','bread','ham')
|butter    |  bread   |       ham|

التنسيق القديم

نحن يمكننا حتى تنسيق النصوص مثل استخدام sprintf() في لغة البرمجة C بالأسلوب القديم. نستخدم رمز % لإنجاز هذه المهمة.

>>> x = 12.3456789
>>> print('قيمة x هو %3.2f' % x)
قيمة x هي 12.35
>>> print('قيمة x هي %3.4f' % x)
قيمة x هي 12.3457

طرق الأحرف الشائعة في Python

يوجد العديد من الطرق المتاحة للعناصر النصية. طريقة format() المذكورة أعلاه هي واحدة منها. الطرق الشائعة تشمل lower()، upper()، join()، split()، find()، replace()، وهلم جرا. إليك القائمة الكاملةطرق الأحرف المدمجة في Python.

>>> 'w3codebox'.lower()
w3codebox
>>> 'w3codebox'.upper()
w3codebox
>>> 'هذا سيقسم جميع الكلمات في قائمة'.split()
['هذا', 'سيقسم', 'جميع', 'الكلمات', 'في', 'قائمة']
>>> ' '.join(['هذا', 'سيجمع', 'جميع', 'الكلمات', 'في', 'سلسلة'])
'هذا سيجمع جميع الكلمات في سلسلة'
>>> 'عام جديد'.find('ew')
7
>>> 'عام جديد'.replace('عام','مذهل')
'عام جديد مذهل'