سؤال

هذا نوع من الأسئلة للمبتدئين، لكن لم أتمكن من إيجاد حل.قرأت قائمة سلاسل من ملف، وحاولت الحصول على عينة عشوائية مكونة من 5 عناصر باستخدام Random.sample، لكن القائمة الناتجة تحتوي على أحرف فقط.لماذا هذا؟كيف يمكنني الحصول على قائمة عينة عشوائية من السلاسل؟

هذا ما افعله:

    names = random.sample( open('names.txt').read(), 5 )
    print names

وهذا يعطي قائمة أحرف مكونة من خمسة عناصر مثل:

['\x91', 'h', 'l', 'n', 's']

إذا قمت بحذف جزء Random.sample، وقمت بطباعة القائمة، فسيتم طباعة كل سطر من الملف، وهو السلوك المتوقع، ويثبت أن الملف قد تمت قراءته بشكل جيد.

هل كانت مفيدة؟

المحلول

إذا كانت الأسماء كلها في أسطر منفصلة، ​​قم بما يلي:

names = random.sample(open('names.txt').readlines(), count)
print names

أنت تخطئ في الأساس لأنك تحتاج إلى تمرير Interable إلى random.sample().عندما تقوم بتمرير سلسلة، يتم التعامل معها كقائمة.إذا كانت أسماءك كلها في سطر واحد، فأنت بحاجة إلى استخدام split() لتفكيكهم وتمرير تلك القائمة إلى random.sample().

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top