tehran-stocks icon indicating copy to clipboard operation
tehran-stocks copied to clipboard

دریافت آیدی تکراری

Open BabakAmini opened this issue 2 years ago • 5 comments

وقت بخیر

از آنجایی که در لینک http://tsetmc.com/tsev2/data/MarketWatchPlus.aspx علاوه بر اطلاعات قیمت، اطلاعات سفارشات نیز وجود دارد روشی که شما در لینک زیر استفاده کرده‌اید باعث بدست آمدن آیدی تکراری می‌شود:

https://github.com/ghodsizadeh/tehran-stocks/blob/e7ef575d9d2fee2ffbe192d6a5c30e9ce31254af/src/tehran_stocks/download/names.py#L12

در لحظه‌ای که من چک کردم روش شما ۸۰۰۸ آیدی بر میگرداند در صورتیکه در واقعیت فقط ۱۳۸۱ نماد وجود دارد، به عبارتی حدود ۶ برابر تعداد موجود (یک بار برای دیتای قیمت هر نماد و ۵ بار برای دیتای ۵ سطر سفارشات). اینکار باعث می‌شود اجرای حلقه زیر بسیار زمانبر باشد:

https://github.com/ghodsizadeh/tehran-stocks/blob/e7ef575d9d2fee2ffbe192d6a5c30e9ce31254af/src/tehran_stocks/download/names.py#L138

برای برطرف شدن این اشکال، کد زیر پیشنهاد می‌شود:

ls = r.text.split('@')[2]
ids = re.findall(r"\d{14,20}", ls)

توجه داشته باشید که آیدی نماد می‌تواند ۱۴ کاراکتر هم داشته باشد بنابراین بجای عدد ۱۵ از عدد ۱۴ استفاده کرده‌ام.

سوالی هم که برای من پیش آمده این است که چرا با وجود اینکه مقدار بازگشتی ()re.findall از نوع list هست شما یک بار آن را به set تبدیل کرده و بعد دوباره list برگردانده‌اید. دلیل خاصی برای اینکار داشتین؟

BabakAmini avatar Apr 12 '22 13:04 BabakAmini

بله دقیقا برای رفع این مشکلی که شما مطرح کردید هست، تبدیل set هر چیز duplicate رو حذف می‌کنه و میشه مجدد به لیست تبدیلش کرد. من با این روش سعی کردم از تکراری بودن موارد جلوگیری کنم.

ghodsizadeh avatar Apr 18 '22 11:04 ghodsizadeh

ممنون، جالب بود، من این روش رو نمیدونستم، البته همچنان تغییر عدد ۱۵ به ۱۴ حدود ۵۰ آیدی به لیست آیدی‌ها اضافه میکنه

BabakAmini avatar Apr 18 '22 17:04 BabakAmini

یعنی میگید برخی رو از دست میدیم؟

On Mon, Apr 18, 2022, 9:58 PM BabakAmini @.***> wrote:

ممنون، جالب بود، من این روش رو نمیدونستم، البته همچنان تغییر عدد ۱۵ به ۱۴ حدود ۵۰ آیدی به لیست آیدی‌ها اضافه میکنه

— Reply to this email directly, view it on GitHub https://github.com/ghodsizadeh/tehran-stocks/issues/80#issuecomment-1101588963, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABSDCQG5JYQDUL77ARWJ6H3VFWLVNANCNFSM5THIROOA . You are receiving this because you modified the open/close state.Message ID: @.***>

ghodsizadeh avatar Apr 18 '22 18:04 ghodsizadeh

یعنی میگید برخی رو از دست میدیم؟ On Mon, Apr 18, 2022, 9:58 PM BabakAmini @.> wrote: ممنون، جالب بود، من این روش رو نمیدونستم، البته همچنان تغییر عدد ۱۵ به ۱۴ حدود ۵۰ آیدی به لیست آیدی‌ها اضافه میکنه — Reply to this email directly, view it on GitHub <#80 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABSDCQG5JYQDUL77ARWJ6H3VFWLVNANCNFSM5THIROOA . You are receiving this because you modified the open/close state.Message ID: @.>

بله، آیدی با ۱۴ کاراکتر هم داریم، برای دیتای امشب حدود ۵۰ نماد دیگه هم هست

BabakAmini avatar Apr 18 '22 18:04 BabakAmini

ممنونم. سعی می‌کنم این مورد رو اصلاح کنم. هرچند الان دیتا رو از جای دیگه‌ای می‌گیره ولی باید اونجا رو هم اصلاح کنم.

ghodsizadeh avatar Apr 18 '22 18:04 ghodsizadeh