🧑‍💻PythonDev🧑‍💻
365 subscribers
86 photos
3 videos
15 files
78 links
Python tips and tricks
The Good, Bad and the Ugly

📚توی این کانال فقط قرار هست در مورد core python صحبت کنیم.

👨‍💻این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی این چند سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازه‌کار)👨‍💻


@Mtio975
Download Telegram
@python4all_pro -Data Cleaning and.pdf
3.7 MB
🔘 پاک‌سازی داده ها با پایتون

🔻چرا داده‌های تمیز بسیار مهم هستند، چه چیزی می‌ تواند باعث خطا شود و چگونه خطا ها را شناسایی، پیشگیری و رفع کنیم تا داده‌ های خود را تمیز نگه داریم. مبارزه با دیتاهای آلوده و دسترسی به دیتاهای تمیز یکی از بزرگترین دغدغه های دیتاساینتیست هاست برای آموزش این موضوع از چیت شیت های پاک سازی داده با پایتون که در کانال منتشر میشه استفاده کنید .

✔️ویدیو ها :
1️⃣ آموزش پاک سازی داده با پایتون از یودمی  : لینک
2️⃣ آموزش ضروری پاکسازی داده‌ ها در پایتون با زیرنویس فارسی : لینک
چیت شیت ها:
1️⃣ چیت شیت شماره ۱ :https://t.me/pythonlearnme/191


Cheat Sheet 2 : #Data_Cleaning

#علم_داده #cheat_sheet #pdf
🕹 بازی تتریس در ترمینال
بازسازی تتریس الکسی پاژیتنوف با زبان بش.

این نسخه از تتریس، بازسازی بازی تتزیس اورجینال است که به دست Alexey Pajitnov در سال 1985 ساخته شد.

👈 📹 ویدیو تتریس اورجینال

🔸 برای دانلود دستور زیر را اجرا کنید:

curl -O -L https://raw.githubusercontent.com/kt97679/tetris/master/tetris.sh


🔹سپس:
chmod +x tetris.sh
./tetris.sh


و از بازی تتریس در ترمینال لذت ببرید.
این بازی هیچ dependency جز خود بش نداره و همه‌جا بدون اشکال اجرا میشه.


خوندن کد بازی هم جذابیت خودش رو داره و می‌تونین ببینین چطوری مهره‌های تتریس با آرایه ساخته شدن و اینکه کل اسکریپت بدون استفاده از curses  داره توی ترمینال گرافیک ایجاد می‌کنه.

#معرفی #بازی #بش #لینوکس
-اصل Use Pronounceable Names در کلین کد

این اصل میگه که شما باید اسم هایی که برای متغیر هاتون انتخاب میکنید قابل تلفظ باشه اگه نتونید تلفظش کنید نمیتونید در بارش بحث کنید بدون این که صدای احمقانه در بیارید این مهمه چون برنامه نویسی یه فعالیت اجتماعیه

ما برنامه نویسا باید اسم هارو جوری انتخاب کنیم که وقتی در بارش توضیح میدیم راحت باشیم مثلا این دوتا کد رو ببینید اولی اسم های غیر قابل تلفظ داره و دومی اسم های درست درمون

کد زیر :

class DtaRcd102 {
      private Date genymdhms;
      private Date modymdhms;
      private final String pszqint = "102";
};


میتونه با متغیر های بهتر  زیر نوشته باشه :

class Customer {
      private Date generationTimestamp;
      private Date modificationTimestamp;
      private final String recordId = "102";
};



حالا وقتی میخوایم به رفیقمون بگیم بیا یه نگاه به این کد بنداز دیگه راحت تلفظ میکنیم و صدای احمقانه در نمیاریم
درخت مرکل (Merkle Tree) یا درخت هش Hash Tree
‌ٰکاربرد:
Git, Blockchain , ...
توضیح:
نوعی ساختمان داده شامل یک درخت که خلاصهٔ اطلاعات یک دادهٔ بزرگتر نگه میدارد و برای تشخیص محتویات

ابزار:
با merkdir میتوانید از دایرکتوری سیستم خودتان Merkle tree بسازید

https://github.com/makew0rld/merkdir

@DevTwitter | <MehrdadLinux/>
یک خبر عالی: دیگه نوشتن کد توی Jupyter رو به ChatGPT بسپار

با Jupyter AI به طور مستقیم میتونی کدهات رو با نوشتن prompt مناسب تولید کنی

توی لینک های زیر یاد بگیرین چطور ازش استفاده کنین:
گیت هاب: https://lnkd.in/gKWbZTwR
داکیومنت: https://lnkd.in/gN5zYxtx
ایراد کد زیر چیست؟ فکر کنید این تابع قراره یک جایی از سیستم بک اندتون استفاده شه. قراره آدرس یوزر رو از یکی از سرویس های اینترنالتون از طریق پروتکل http بگیره. چه ایرادی میتونید تو این کد پیدا کنید؟


from httpx import AsyncClient, HTTPError
from some_module import AddressNotFoundError, UserServiceException, UserId
from pydantic import BaseModel

class Address(BaseModel):
location: str
house_num: int

async def get_address(user_id: UserId) -> Address:
client = AsyncClient()
try:
resp = await client.get("http://user_service/v1/user-address", params={"user_id": user_id})
if resp.status_code == 404:
raise AddressNotFoundError(text=resp.text)
return Address(**resp.json())
except Exception as error:
raise UserServiceException

(resp.text)
 from error
یکی از بهترین منبع های یادگیری گیت, خوده داکیومنتشه .

https://git-scm.com/book/en/v2

یک از سرفصل هاش submodule هست که واقعا میتونه مفید باشه براتون مخصوصا برای فرانت کارا و کسایی که js میزنن.

It often happens that while working on one project, you need to use another project from within it. Perhaps it’s a library that a third party developed or that you’re developing separately and using in multiple parent projects. A common issue arises in these scenarios: you want to be able to treat the two projects as separate yet still be able to use one from within the other.

https://git-scm.com/book/en/v2/Git-Tools-Submodules
با سلام و وقت بخیر این گروه به هدف پرسش و پاسخ  مسیر راه و رفع اشکال در تمام حوزه های برنامه نویسی ساخته شده و تمامی دوستانی که در حوزه های مختلف برنامه نویسی کار میکنید و دوستان تازه کاری که سعی دارن به طور کلی رفع اشکال های خودشان را انجام بدن میتوانند اشکال های خود راه رفع کنند و از دوستانی که سابقه کار در حوزه های برنامه نویسی را داشته اند تجربه کسب کنند موفق و موید باشید ❤️

https://t.me/+PMg6KSn2PQI1NzFk
چند تا نکته پرتکرار در مورد رزومه نوشتن:

۱. اولا recruiter ها به طور میانگین ۸-۱۲ ثانیه رو هر رزومه وقت میذارن. واسه همین bold کردن کیوردها خیلی خیلی مهمه. سعی کنین مطالب مهمتر رو همون اول بیارین و در کل کار طرف رو برای فهمیدنش آسون‌تر کنین

۲. لیست skills بهتره اول آورده شه که لیستیه از تکنولوژی ها و زبان های برنامه نویسی و…
بعدش تو هر کدوم از تجربه های کاری یا حتی پژوهشی، تکنولوژی/زبان برنامه نویسی/مدل ماشین لرنینگ… استفاده شده بهتره bold شه. اینطوری اون مهارت باورپذیرتر میشه و بهش context داده میشه

۳. اعداد خیلی مهمن برای هر تجربه کاری.  چیزایی مثل:

تعداد افرادی که تو هر پروژه باهاشون کار کردین و مخصوصاً lead کردین
تعداد افرادی که از تیم‌های دیگه باهاشون کار کردین و پوزیشن‌هاشون
حجم داده ورودی
تعداد کاربرها
مقدار تغییر متریک با انجام اون پروژه
تعداد request در ثانیه،…

۴. برای پوزیشن های کاری، فقط چند تا publication کافیه و واسه بقیه بهتره لینک داده شه به google scholar. وگرنه اهمیت بقیه رزومه تحت تاثیر قرار میگیره. حتی بخش education میتونه پایین‌تر قرار بگیره و قبلش تجربه کاری و پروژه‌های مهم رو بیارین

۵. واسه هر پوزیشن سعی کنین رزومه رو یه کم ادیت کنین تا بیشتر به job description شبیه شه. حتی اگه skill جدید نیازه که قبلاً تجربه‌شو نداشتین، میتونین چند تا پروژه جانبی انجام بدین و به رزومه اضافه کنین. اون‌طوری کیوردهایی که دنبالشن رو راحت‌تر در اختیارشون قرار میدین

۶. به همه کسایی که میخوان رزومه‌شونو بفرستن واسم تا نظرمو بگم، میگم باشه. ولی در عمل اصن فرصتشو نمیکنم یا شاید تنبلیم میاد اما در مجموع نکته خیلی متفاوتی نسبت به چیزایی که اینجا گفتم به ذهنم نمیرسه معمولاً. امیدوارم اینطوری به آدمای بیشتری کمک کنه
من راجب repr, str , ... صحبت کردم.
این کد رو یکی از اعضا فرستاده (درحال code review این کد رو دیده)

@dataclass
class CasbinRuleEntity:
    id: typing.Optional[int] = None
    ptype: typing.Optional[str] = None
    v0: typing.Optional[str] = None
    v1: typing.Optional[str] = None
    v2: typing.Optional[str] = None
    v3: typing.Optional[str] = None
    v4: typing.Optional[str] = None
    v5: typing.Optional[str] = None

    def __str__(self):
        arr = [self.ptype]
        for v in (self.v0, self.v1, self.v2, self.v3, self.v4, self.v5):
            if v is None:
                break
            arr.append(v)
        return ', '.join(arr)

    def __repr__(self):
        return '<CasbinRule {}: "{}">'.format(self.id, str(self))
ی مورد رو من بگم و بعد سکوت کنم :
یکی از دلایلی که
@dataclass
رو استفاده می‌کنیم این هست که دیگه repr بدرد نخور ننویسیم.

باقی مشکلات رو شما بگید (به اکثر موارد قبلاً اشاره شده توی کانال)
🧑‍💻PythonDev🧑‍💻
من راجب repr, str , ... صحبت کردم. این کد رو یکی از اعضا فرستاده (درحال code review این کد رو دیده) @dataclass class CasbinRuleEntity:     id: typing.Optional[int] = None     ptype: typing.Optional[str] = None     v0: typing.Optional[str] = None     v1:…
دوستان به موارد زیادی اشاره کردند اما گفتم یکبار هم خودم همه‌ی آن چیزی که توی کد ریویو انجام میدم رو بگم :

۱- وقتی کلاس یا تابع تعریف می‌کنید که خودش یا اجزا تشکیل دهنده‌اش مشخص نیست حتما باید داکیومنت یا کامنت داشته باشه
v0, v1, v2 , ...
بدترین اسامی هست که میشه انتخاب کرد؛ چون برنامه نویس داره فرض می‌کنه که همه‌ی افرادی که کد رو میخونند بیزینس رو بخوبی می‌شناسند.

۲- استفاده از typing optional در اینجا درست نیست مخصوصا که برای همه‌ی موارد تکرار شده و به همه‌ی موارد دیفالت None داده شده؛ حتی اگر همین کد رو بخوایم نگه داریم این راهکارها بهتر خواهد بود :

v0: str | None

v0: typing.Union[str, None]

۳- از dataclass هیچ استفاده‌ای نشده (frozen, ordering, slot , ....) حتی از ویژگی‌های حالت ساده‌ترش هم استفاده نشده؛ مثل پیاده سازی methods که یعنی repr و str نیازی نبود نوشته بشه.

۴- حالا که نوشته شده
repr
در
انتهای خروجی به str(self) رو داره و این یعنی برنامه نویس سواد نوشتن repr درست رو نداشته و چون توی حلقه بی‌نهایت میوفته مجبور شده که str رو هم پیاده‌سازی کنه

۵- داخل repr همه چیز پر از ایراد هست (تمام موارد رو قبلا بررسی کردیم تو کانال) :
عدم استفاده از qualname , هاردکد کردن اسم کلاس
عدم استفاده از r! جهت نمایش درست تایپ‌های داخلی
فرمت اشتباه؛ خروجی repr رو برای ساخت مجدد آبجکت از کلاس نمی‌شه استفاده کرد.

۶- خورد str کلا سوال هست؛ نوشتاری که تمیز نیست؛ هدفش مشخص نیست و ....

من حتی به این حالت هم فکر کردم که چون تعداد متغییرها زیاد بوده برنامه‌نویس خواسته از یک جایی به بعد ... نشون بده مثل کاری که numpy , .... می‌کنند؛ که اگر هدف هم این بوده پیاده سازی اشتباهی انجام داده و با یک جستجوی ساده حتی می‌تونسته به راهکار درست برسه
reprlib builtin module

تقریبا ۲۰ خط کد بود و ۳۰ خط ایراد.
Please open Telegram to view this post
VIEW IN TELEGRAM
✔️ استیبل بودن یا نبودن یک الگوریتم مرتب سازی

یکی از دسته بندی های موجود برای الگوریتم هایsort کردن، فاکتور stable بودن یا نبودن هست. به طور خلاصه به الگوریتمی میگن stable که:

موقع sort کردن یک لیست، اگه ۲ تا آیتم مساوی هم بودن، دقیقا به همون ترتیبی که توی لیست اولیه بودن، توی لیست مرتب شده هم ظاهر بشن.

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

lst = [
("Ashkan",17),
("Bahar",18),
("Sorena",17)
]
یک راه مرسوم اینه که به این روش sort رو انجام بدیم:
lst.sort(key=lambda x: (x[1], x[0]))
کاملا درسته و هیچ اشکالی نداره. بیشتر میخواستیم درباره موضوع پست صحبت کنیم.

آیا میتونیم فقط بیایم بر اساس آیتم دوم sort ش کنیم؟ این که خود لیست بر اساس حروف الفبا مرتب شده آیا کمکی میکنه؟ یعنی:
lst.sort(key=lambda x: x[1])
اگه بدونیم الگوریتمی که استفاده شده stable هست بله میتونیم و گارانتی هست که آیتم های مساوی به همون ترتیب در خروجی قرار میگیرن، و چون در حال حاضر بر اساس حروف الفبا مرتب شده هستن، اون افرادی که نمره ی برابر دارن اتوماتیک بر اساس حروف الفبا هم مرتب هستن.

خروجی هردو:
[
('Ashkan', 17),
('Sorena', 17),
('Bahar', 18)
]
پایتون از Tim Sort استفاده میکنه و stable هست.


چند تا از الگوریتم های مرتب سازی استیبل:
• Insertion Sort
• Merge Sort
• Bubble Sort
• Tim Sort
و نقطه‌ی مقابلشون:
• Heap Sort
• Selection Sort
• Quick Sort
🔶🔹File Handling🔹🔶

با استفاده از عملیات "فایل هندلینگ" در پایتون، شما می‌توانید فایل‌ها را مدیریت کرده و عملیات خواندن و نوشتن بر روی آن‌ها را انجام دهید. این عملیات اجازه می‌دهد تا به برنامه‌های شما امکان تعامل با فایل‌های داده و ذخیره و بازیابی اطلاعات را بدهد. در زیر، مراحل اساسی فایل هندلینگ در پایتون را توضیح می‌دهم:

1. باز کردن فایل:
قبل از هر چیزی، باید فایل مورد نظر را باز کنید. این کار با استفاده از تابع open() انجام می‌شود. تابع open() پارامترهایی مانند نام فایل و حالت باز کردن را دریافت می‌کند. به طور مثال:


   file = open("example.txt", "r") # باز کردن فایل برای خواندن

در این مثال، فایل با نام "example.txt" برای خواندن باز شده است.

2. خواندن اطلاعات از فایل:
با داشتن فایل هندل، می‌توانید اطلاعات موجود در فایل را خوانده و استفاده کنید. برای خواندن اطلاعات، از توابعی مانند .read() و .readline() و .readlines() استفاده می‌کنیم. به طور مثال:


   content = file.read() # خواندن تمام محتوای فایل
line = file.readline() # خواندن یک خط از فایل
lines = file.readlines() # خواندن همه خطوط فایل و ذخیره آن‌ها در یک لیست


3. نوشتن در فایل:
اگر قصد دارید اطلاعاتی را در فایل بنویسید، باید فایل را در حالت مناسب باز کنید و از تابع write() استفاده کنید. به طور مثال:


   file = open("example.txt", "w") # باز کردن فایل برای نوشتن
file.write("Hello, World!") # نوشتن رشته در فایل


4. بستن فایل:
پس از اتمام کار با فایل، بهتر است آن را ببندید تا منابع سیستم را آزاد کنید. برای بستن فایل، از تابع close() استفاده می‌کنید. به طور مثال:


   file.close()


ضمناً، روش بهتری برای کار با فایل‌ها و مدیریت آن‌ها در پایتون، استفاده از بلوک with است. مزیت استفاده از این بلوک این است که به صورت خودکار فایل را ببندید و نیازی به صریحترین بستن فایل ندارید. روش استفاده از بلوک with به این صورت است:

with open("example.txt", "r") as file:
content = file.read()
# انجام عملیات مورد نظر
# فایل به طور خودکار بسته می‌شود


به خاطر داشته باشید که در حین کار با فایل‌ها، باید از نحوه‌ی باز کردن فایل، نوشتن و خواندن اطلاعات و بستن فایل به درستی اطمینان حاصل کنید تا از ایجاد خطاها و مشکلات جلوگیری شود.
🔶🔹Python String Formatting🔹🔶

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

در پایتون، دو روش متداول برای فرمت‌بندی رشته‌ها وجود دارد:
۱. روش قدیمی: استفاده از عملگر % (عملگر قدیمی)
۲. روش جدید: استفاده از متد .format() (عملگر جدید)

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

age = 25
name = "John"
message = "My name is %s and I am %d years old." % (name, age)
print(message)

Output: My name is John and I am 25 years old.

در عملگر جدید .format()، مقادیر را با استفاده از علامت {} در رشته قرار می‌دهیم و سپس این مقادیر را با استفاده از متد .format() تعیین می‌کنیم. به طور مثال:

age = 25
name = "John"
message = "My name is {} and I am {} years old.".format(name, age)
print(message)

Output: My name is John and I am 25 years old.

همچنین در روش جدید، می‌توانید با استفاده از شماره موقعیت مقادیر در .format()، ترتیب قرارگیری آن‌ها را تغییر دهید. به طور مثال:

age = 25
name = "John"
message = "My name is {1} and I am {0} years old.".format(age, name)
print(message)

Output: My name is John and I am 25 years old.

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

pi = 3.14159265359
formatted_pi = "{:.2f}".format(pi)
print(formatted_pi)

Output: 3.14

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

ضمناً در پایتون 3.6 و بالاتر، می‌توان از روش f-string استفاده کرد. این روش بسیار ساده و خوانا است و با استفاده از علامت f و داخل آن قرار دادن متغیرها، رشته را قالب‌بندی می‌کند. به طور مثال:

age = 25
name = "John"
message = f"My name is {name} and I am {age} years old."
print(message)

Output: My name is John and I am 25 years old.
🔷🔸Python Arrays🔸🔷

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

در پایتون، می‌توانیم از دو نوع آرایه استفاده کنیم: "لیست‌ها" (Lists) و "آرایه‌های numpy" (NumPy Arrays).

1. لیست‌ها:
لیست‌ها در پایتون یک ساختار داده پویا و چند منظوره هستند. با استفاده از لیست‌ها می‌توانیم داده‌های مختلف را در یک لیست ذخیره کنیم. برای ایجاد یک لیست، از علامت [] و اعضا را با کاما جدا می‌کنیم. مثال زیر روش‌های ساختن یک لیست را نشان می‌دهد:


   my_list = []  # ایجاد یک لیست خالی
my_list = [1, 2, 3, 4, 5] # ایجاد لیست با مقادیر اولیه
my_list = ['apple', 'banana', 'cherry'] # لیستی از رشته‌ها


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

2. آرایه‌های numpy:
آرایه‌های numpy یک کتابخانه پرکاربرد در پایتون هستند که مفهوم آرایه را گسترش می‌دهند. این کتابخانه امکانات بسیاری را برای عملیات عملیاتی، ریاضیاتی و استنباطی روی داده‌های چند بعدی فراهم می‌کند. برای استفاده از آرایه‌های numpy، ابتدا باید کتابخانه را با دستور import numpy as np وارد کنیم.

برخلاف لیست‌ها، آرایه‌های numpy باید از مقداردهی اولیه داده‌ها با استفاده از توابع خاصی مانند numpy.array() استفاده کنند. مثال زیر نشان می‌دهد که چگونه یک آرایه یک بعدی از لیست‌ها ایجاد کنیم:


   import numpy as np

my_array = np.array([1, 2, 3, 4, 5]) # ایجاد یک آرایه یک بعدی


آرایه‌های numpy قابلیت‌های بسیاری دارند، از جمله عملیات ریاضی و آماری، شاخص‌گذاری و برش، تبدیلات شکل و بسیاری دیگر.

در نتیجه، آرایه‌ها در پایتون ابزارهای قدرتمندی هستند که به ما امکان می‌دهند داده‌ها را سازماندهی و برای آن‌ها عملیات مختلفی انجام دهیم. 🦦📊

#FXL
#numpy
#Python_Arrays
🔷🔸Python PIP🔸🔷

به معنای "PIP Installs Packages." است. PIP یک سیستم مدیریت بسته‌ها در Python است که برای نصب و مدیریت بسته‌های نرم‌افزاری در Python استفاده می‌شود.

بسته‌ها در Python کدهای توسعه‌یافته‌ی قابل استفاده مجدد هستند که قابلیت‌ها و امکانات خاصی را به برنامه‌ها اضافه می‌کنند.
این بسته‌ها می‌توانند کتابخانه‌ها، ابزارها، فریم ورک‌ها و سایر منابع نیازمند در حوزه برنامه‌نویسی Python باشند. PIP، امکان نصب و به‌روزرسانی این بسته‌ها را فراهم می‌کند.

شما می‌توانید با استفاده از دستورات PIP، بسته‌های مورد نیاز خود را از Python Package Index (PyPI) دانلود و نصب کنید. PyPI یک مخزن در اینترنت است که بسته‌هایی را که توسط جامعه Python توسعه داده شده‌اند، میزبانی می‌کند.

بعضی از دستورات متداول PIP عبارتند از:

- pip install package_name: برای نصب یک بسته از PyPI.
- pip uninstall package_name: برای حذف یک بسته نصب شده.
- pip freeze: نمایش لیست تمام بسته‌های نصب شده به همراه نسخه آن‌ها.
- pip list: نمایش لیست بسته‌های نصب شده.
- pip show package_name: نمایش اطلاعات جزئیات یک بسته نصب شده.

همچنین، می‌توانید با استفاده از فایل requirements.txt، لیستی از بسته‌های مورد نیاز خود را جهت نصب و استفاده توسط PIP تعریف کنید.

پیشنهاد می‌شود قبل از استفاده از PIP، نسخه‌ی مناسبی از Python را نصب کنید و مطمئن شوید که محیط Python شما از PIP پشتیبانی می‌کند. 🐍📦


#FXL
در اینجا دو مثال ساده برای استخراج اطلاعات از یک وب سایت با استفاده از پایتون و کتابخانه beautifulsoup رو برای شما آوردم:

مثال 1: استخراج عنوان های خبرها از یک سایت خبری

import requests
from bs4 import BeautifulSoup

# ارسال درخواست به صفحه وب و دریافت پاسخ
response = requests.get('https://example.com/news')

# بررسی وضعیت درخواست
if response.status_code == 200:
# پارس کردن محتوای صفحه وب
soup = BeautifulSoup(response.text, 'html.parser')

# استخراج عنوان های خبرها
news_titles = soup.find_all('h2', class_='title')

# چاپ عنوان های خبرها
for title in news_titles:
print(title.text)
else:
print('درخواست موفقیت‌آمیز نبود.')


مثال 2 : استخراج قیمت ارزها از یک سایت ارزی

import requests
from bs4 import BeautifulSoup

# ارسال درخواست به صفحه وب و دریافت پاسخ
response = requests.get('https://example.com/currency')

# بررسی وضعیت درخواست
if response.status_code == 200:
# پارس کردن محتوای صفحه وب
soup = BeautifulSoup(response.text, 'html.parser')

# استخراج قیمت ارزها
currency_prices = soup.find_all('span', class_='price')

# چاپ قیمت ارزها
for price in currency_prices:
print(price.text)
else:
print('درخواست موفقیت‌آمیز نبود.')


لطفاً توجه داشته باشید که شما باید آدرس وب سایت مورد نظر خودتونو در توابع requests.get() قرار بدید و الگوهای HTML مورد استخراج رو براساس وب سایت خود تنظیم کنید.
همچنین، ممکنه برای استخراج اطلاعات از وب سایت خاصی نیاز به استفاده از تکنیک‌ها و قوانین خاص داشته باشید که برای هر مورد باید اونهارو بررسی کنید. 🕵️‍♀️


#FXL
#Web_scraping
#پایتون_پیشرفته
#استخراج
PythonNotesForProfessionals.pdf
6.1 MB
یادداشت‌هایی از پایتون برای حرفه‌ای‌ها:

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